diff --git a/BotSharp.Algorithm.UnitTest/BotSharp.Algorithm.UnitTest.csproj b/BotSharp.Algorithm.UnitTest/BotSharp.Algorithm.UnitTest.csproj
index 437badee..d2fbd02f 100644
--- a/BotSharp.Algorithm.UnitTest/BotSharp.Algorithm.UnitTest.csproj
+++ b/BotSharp.Algorithm.UnitTest/BotSharp.Algorithm.UnitTest.csproj
@@ -5,7 +5,7 @@
false
- Debug;Release;RASA NLU;DIALOGFLOW;RASA
+ Debug;Release;RASA NLU;DIALOGFLOW;RASA;ARTICULATE
AnyCPU;x64
diff --git a/BotSharp.Algorithm/BotSharp.Algorithm.csproj b/BotSharp.Algorithm/BotSharp.Algorithm.csproj
index 98d1bb67..f47895e0 100644
--- a/BotSharp.Algorithm/BotSharp.Algorithm.csproj
+++ b/BotSharp.Algorithm/BotSharp.Algorithm.csproj
@@ -2,7 +2,7 @@
netstandard2.0
- Debug;Release;RASA;DIALOGFLOW
+ Debug;Release;RASA;DIALOGFLOW;ARTICULATE
AnyCPU;x64
true
https://raw.githubusercontent.com/Oceania2018/BotSharp/master/BotSharp.WebHost/wwwroot/images/BotSharp.png
@@ -24,4 +24,8 @@
false
+
+ TRACE;ARTICULATE
+
+
diff --git a/BotSharp.Core.UnitTest/BotSharp.Core.UnitTest.csproj b/BotSharp.Core.UnitTest/BotSharp.Core.UnitTest.csproj
index 86788b78..9e09d900 100644
--- a/BotSharp.Core.UnitTest/BotSharp.Core.UnitTest.csproj
+++ b/BotSharp.Core.UnitTest/BotSharp.Core.UnitTest.csproj
@@ -7,7 +7,7 @@
AnyCPU;x64
- Debug;Release;RASA NLU;DIALOGFLOW;RASA
+ Debug;Release;RASA NLU;DIALOGFLOW;RASA;ARTICULATE
diff --git a/BotSharp.Core/BotSharp.Core.csproj b/BotSharp.Core/BotSharp.Core.csproj
index c7b653aa..1f60af4f 100644
--- a/BotSharp.Core/BotSharp.Core.csproj
+++ b/BotSharp.Core/BotSharp.Core.csproj
@@ -6,7 +6,7 @@
SAK
SAK
AnyCPU;x64
- Debug;Release;DIALOGFLOW;RASA
+ Debug;Release;DIALOGFLOW;RASA;ARTICULATE
@@ -50,6 +50,11 @@ If you feel that this project is helpful to you, please Star on the project, we
false
+
+ DEBUG;TRACE;ARTICULATE
+ false
+
+
diff --git a/BotSharp.Core/Engines/Articulate/AgentModel.cs b/BotSharp.Core/Engines/Articulate/AgentModel.cs
new file mode 100644
index 00000000..2fe437c3
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/AgentModel.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class AgentModel
+ {
+ public int Id { get; set; }
+
+ public string Status { get; set; }
+
+ public string Timezone { get; set; }
+
+ public string Language { get; set; }
+
+ public string AgentName { get; set; }
+
+ public bool UseWebhook { get; set; }
+
+ public string Description { get; set; }
+
+ public bool UsePostFormat { get; set; }
+
+ public bool ExtraTrainingData { get; set; }
+
+ public List FallbackResponses { get; set; }
+
+ public bool EnableModelsPerDomain { get; set; }
+
+ public decimal DomainClassifierThreshold { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/DomainModel.cs b/BotSharp.Core/Engines/Articulate/DomainModel.cs
new file mode 100644
index 00000000..aa183c02
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/DomainModel.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class DomainModel
+ {
+ public int Id { get; set; }
+
+ public string Agent { get; set; }
+
+ public string DomainName { get; set; }
+
+ public bool Enabled { get; set; }
+
+ public bool ExtraTrainingData { get; set; }
+
+ public decimal IntentThreshold { get; set; }
+
+ public string Status { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/EntityModel.cs b/BotSharp.Core/Engines/Articulate/EntityModel.cs
new file mode 100644
index 00000000..976c2a68
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/EntityModel.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class EntityModel
+ {
+ public int Id { get; set; }
+
+ public string Regex { get; set; }
+
+ public string Agent { get; set; }
+
+ public string EntityName { get; set; }
+
+ public string Type { get; set; }
+
+ public string UiColor { get; set; }
+
+ public List Examples { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/EntitySynonymModel.cs b/BotSharp.Core/Engines/Articulate/EntitySynonymModel.cs
new file mode 100644
index 00000000..3cd7fa4a
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/EntitySynonymModel.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class EntitySynonymModel
+ {
+ public string Value { get; set; }
+
+ public List Synonyms { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/IntentExampleModel.cs b/BotSharp.Core/Engines/Articulate/IntentExampleModel.cs
new file mode 100644
index 00000000..94e86bf8
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/IntentExampleModel.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class IntentExampleModel
+ {
+ public string userSays { get; set; }
+
+ public List Entities { get; set; }
+ }
+
+ public class ArticulateTrainingIntentExpressionPart : TrainingIntentExpressionPart
+ {
+ public int EntityId { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/IntentModel.cs b/BotSharp.Core/Engines/Articulate/IntentModel.cs
new file mode 100644
index 00000000..a5da0fcf
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/IntentModel.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class IntentModel
+ {
+ public int Id { get; set; }
+
+ public string IntentName { get; set; }
+
+ public string Agent { get; set; }
+
+ public string Domain { get; set; }
+
+ public bool UsePostFormat { get; set; }
+
+ public bool UseWebhook { get; set; }
+
+ public List Examples { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/IntentScenarioModel.cs b/BotSharp.Core/Engines/Articulate/IntentScenarioModel.cs
new file mode 100644
index 00000000..38ffb66c
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/IntentScenarioModel.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class IntentScenarioModel
+ {
+ public int Id { get; set; }
+
+ public string Domain { get; set; }
+
+ public string Agent { get; set; }
+
+ public string Intent { get; set; }
+
+ public string ScenarioName { get; set; }
+
+ public List IntentResponses { get; set; }
+
+ public List Slots { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/LanguageModel.cs b/BotSharp.Core/Engines/Articulate/LanguageModel.cs
new file mode 100644
index 00000000..d4df3f6f
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/LanguageModel.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class LanguageModel
+ {
+ public string Text { get; set; }
+
+ public string Value { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/PipelineModel.cs b/BotSharp.Core/Engines/Articulate/PipelineModel.cs
new file mode 100644
index 00000000..d9445380
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/PipelineModel.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class PipelineModel
+ {
+ public string Name { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/SettingsModel.cs b/BotSharp.Core/Engines/Articulate/SettingsModel.cs
new file mode 100644
index 00000000..aec28999
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/SettingsModel.cs
@@ -0,0 +1,38 @@
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class SettingsModel
+ {
+ public string DucklingURL { get; set; }
+
+ public string UiLanguage { get; set; }
+
+ public string DefaultAgentLanguage { get; set; }
+
+ public string DefaultTimezone { get; set; }
+
+ public List Timezones { get; set; }
+
+ public List DomainClassifierPipeline { get; set; }
+
+ public List IntentClassifierPipeline { get; set; }
+
+ public List DucklingDimension { get; set; }
+
+ public List EntityClassifierPipeline { get; set; }
+
+ public List DefaultAgentFallbackResponses { get; set; }
+
+ public string RasaURL { get; set; }
+
+ public List SpacyPretrainedEntities { get; set; }
+
+ public List AgentLanguages { get; set; }
+
+ public List UiLanguages { get; set; }
+ }
+}
diff --git a/BotSharp.Core/Engines/Articulate/SlotModel.cs b/BotSharp.Core/Engines/Articulate/SlotModel.cs
new file mode 100644
index 00000000..d47a69da
--- /dev/null
+++ b/BotSharp.Core/Engines/Articulate/SlotModel.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.Core.Engines.Articulate
+{
+ public class SlotModel
+ {
+ public string Entity { get; set; }
+
+ public bool IsList { get; set; }
+
+ public bool IsRequired { get; set; }
+
+ public string SlotName { get; set; }
+
+ public List TextPrompts { get; set; }
+ }
+}
diff --git a/BotSharp.NLP.UnitTest/BotSharp.NLP.UnitTest.csproj b/BotSharp.NLP.UnitTest/BotSharp.NLP.UnitTest.csproj
index b8c19b33..23efcdac 100644
--- a/BotSharp.NLP.UnitTest/BotSharp.NLP.UnitTest.csproj
+++ b/BotSharp.NLP.UnitTest/BotSharp.NLP.UnitTest.csproj
@@ -7,7 +7,7 @@
AnyCPU;x64
- Debug;Release;RASA NLU;DIALOGFLOW;RASA
+ Debug;Release;RASA NLU;DIALOGFLOW;RASA;ARTICULATE
diff --git a/BotSharp.NLP/BotSharp.NLP.csproj b/BotSharp.NLP/BotSharp.NLP.csproj
index 22ecaa6f..d8645d6c 100644
--- a/BotSharp.NLP/BotSharp.NLP.csproj
+++ b/BotSharp.NLP/BotSharp.NLP.csproj
@@ -23,7 +23,7 @@ Naive Bayes Classifier
Added Penn Treebank tokenize standard.
https://raw.githubusercontent.com/Oceania2018/BotSharp/master/BotSharp.WebHost/wwwroot/images/BotSharp.png
BotSharp, NLP, NLU, POS, NER, LSTM, CRF, SVM, Tagger, NaiveBayes
- Debug;Release;RASA NLU;DIALOGFLOW;RASA
+ Debug;Release;RASA NLU;DIALOGFLOW;RASA;ARTICULATE
@@ -40,6 +40,10 @@ Naive Bayes Classifier
false
+
+ TRACE;ARTICULATE
+
+
diff --git a/BotSharp.RestApi/Articulate/AgentController.cs b/BotSharp.RestApi/Articulate/AgentController.cs
new file mode 100644
index 00000000..c20d4ecd
--- /dev/null
+++ b/BotSharp.RestApi/Articulate/AgentController.cs
@@ -0,0 +1,74 @@
+using BotSharp.Core.Engines.Articulate;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace BotSharp.RestApi.Articulate
+{
+#if ARTICULATE
+ [Route("[controller]")]
+ public class AgentController : ControllerBase
+ {
+ [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);
+ }
+
+ return agents;
+ }
+
+ [HttpGet("{agentId}")]
+ public AgentModel GetAgent([FromRoute] int agentId)
+ {
+ string dataPath = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate", $"agent-{agentId}.json");
+
+ string json = System.IO.File.ReadAllText(dataPath);
+
+ var agent = JsonConvert.DeserializeObject(json);
+
+ return agent;
+ }
+
+ [HttpGet("name/{agentName}")]
+ public AgentModel GetAgent([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
+}
diff --git a/BotSharp.RestApi/Articulate/DomainController.cs b/BotSharp.RestApi/Articulate/DomainController.cs
new file mode 100644
index 00000000..58619bf6
--- /dev/null
+++ b/BotSharp.RestApi/Articulate/DomainController.cs
@@ -0,0 +1,57 @@
+using BotSharp.Core.Engines.Articulate;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace BotSharp.RestApi.Articulate
+{
+#if ARTICULATE
+ [Route("[controller]")]
+ public class DomainController : ControllerBase
+ {
+ [HttpGet("{domainId}")]
+ public DomainModel GetDomain([FromRoute] int domainId)
+ {
+ string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
+
+ var dataPath = Directory.GetFiles(dataDir).FirstOrDefault(x => Regex.IsMatch(x, $"-domain-{domainId}.json"));
+ string json = System.IO.File.ReadAllText(dataPath);
+
+ var domain = JsonConvert.DeserializeObject(json);
+
+ return domain;
+ }
+
+ [HttpPost]
+ public void PostModel([FromBody] DomainModel domain)
+ {
+ }
+
+ [HttpGet("/agent/{agentId}/domain")]
+ public DomainPageViewModel GetAgentDomains([FromRoute] int agentId, [FromQuery] int start, [FromQuery] int limit)
+ {
+ var domains = new List();
+
+ string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
+
+ var agentPaths = Directory.GetFiles(dataDir).Where(x => x.Contains($"agent-{agentId}-domain-")).ToList();
+ for (int i = 0; i < agentPaths.Count; i++)
+ {
+ string json = System.IO.File.ReadAllText(agentPaths[i]);
+
+ var domain = JsonConvert.DeserializeObject(json);
+
+ domains.Add(domain);
+ }
+
+ return new DomainPageViewModel { Domains = domains, Total = domains.Count };
+ }
+ }
+#endif
+}
diff --git a/BotSharp.RestApi/Articulate/DomainPageViewModel.cs b/BotSharp.RestApi/Articulate/DomainPageViewModel.cs
new file mode 100644
index 00000000..b4e5e8ed
--- /dev/null
+++ b/BotSharp.RestApi/Articulate/DomainPageViewModel.cs
@@ -0,0 +1,14 @@
+using BotSharp.Core.Engines.Articulate;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.RestApi.Articulate
+{
+ public class DomainPageViewModel
+ {
+ public List Domains { get; set; }
+
+ public int Total { get; set; }
+ }
+}
diff --git a/BotSharp.RestApi/Articulate/EntityController.cs b/BotSharp.RestApi/Articulate/EntityController.cs
new file mode 100644
index 00000000..9b4943c4
--- /dev/null
+++ b/BotSharp.RestApi/Articulate/EntityController.cs
@@ -0,0 +1,51 @@
+using BotSharp.Core.Engines.Articulate;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+namespace BotSharp.RestApi.Articulate
+{
+#if ARTICULATE
+ [Route("[controller]")]
+ public class EntityController : ControllerBase
+ {
+ [HttpGet("{entityId}")]
+ public EntityModel GetEntity([FromRoute] int entityId)
+ {
+ string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
+
+ string dataPath = Directory.GetFiles(dataDir).FirstOrDefault(x => x.EndsWith($"-entity-{entityId}.json"));
+
+ string json = System.IO.File.ReadAllText(dataPath);
+
+ var entity = JsonConvert.DeserializeObject(json);
+
+ return entity;
+ }
+
+ [HttpGet("/agent/{agentId}/entity")]
+ public EntityPageViewModel GetAgentEntities([FromRoute] int agentId, [FromQuery] int start, [FromQuery] int limit)
+ {
+ var entities = new List();
+
+ string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
+
+ var agentPaths = Directory.GetFiles(dataDir).Where(x => x.Contains($"agent-{agentId}-entity-")).ToList();
+ for (int i = 0; i < agentPaths.Count; i++)
+ {
+ string json = System.IO.File.ReadAllText(agentPaths[i]);
+
+ var entity = JsonConvert.DeserializeObject(json);
+
+ entities.Add(entity);
+ }
+
+ return new EntityPageViewModel { Entities = entities, Total = entities.Count };
+ }
+ }
+#endif
+}
diff --git a/BotSharp.RestApi/Articulate/EntityPageViewModel.cs b/BotSharp.RestApi/Articulate/EntityPageViewModel.cs
new file mode 100644
index 00000000..a8bb908b
--- /dev/null
+++ b/BotSharp.RestApi/Articulate/EntityPageViewModel.cs
@@ -0,0 +1,14 @@
+using BotSharp.Core.Engines.Articulate;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.RestApi.Articulate
+{
+ public class EntityPageViewModel
+ {
+ public List Entities { get; set; }
+
+ public int Total { get; set; }
+ }
+}
diff --git a/BotSharp.RestApi/Articulate/IntentController.cs b/BotSharp.RestApi/Articulate/IntentController.cs
new file mode 100644
index 00000000..f0babcb9
--- /dev/null
+++ b/BotSharp.RestApi/Articulate/IntentController.cs
@@ -0,0 +1,141 @@
+using BotSharp.Core.Engines.Articulate;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+namespace BotSharp.RestApi.Articulate
+{
+#if ARTICULATE
+ [Route("[controller]")]
+ public class IntentController : ControllerBase
+ {
+ [HttpGet("{intentId}")]
+ public IntentModel GetIntent([FromRoute] int intentId)
+ {
+ string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
+
+ string dataPath = Directory.GetFiles(dataDir).FirstOrDefault(x => x.EndsWith($"-intent-{intentId}.json"));
+
+ string json = System.IO.File.ReadAllText(dataPath);
+
+ var intent = JsonConvert.DeserializeObject(json);
+
+ return intent;
+ }
+
+ [HttpGet("{intentId}/scenario")]
+ public IntentScenarioModel GetIntentScenario([FromRoute] int intentId)
+ {
+ string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
+
+ string dataPath = Directory.GetFiles(dataDir).FirstOrDefault(x => x.Contains($"-intent-{intentId}-scenario-"));
+
+ string json = System.IO.File.ReadAllText(dataPath);
+
+ var scenario = JsonConvert.DeserializeObject(json);
+
+ return scenario;
+ }
+
+ [HttpGet("{intentId}/webhook")]
+ public void GetIntentWebhook([FromRoute] int intentId)
+ {
+
+ }
+
+ [HttpGet("{intentId}/postFormat")]
+ public void GetIntentPostFormat([FromRoute] int intentId)
+ {
+
+ }
+
+ [HttpGet("/agent/{agentId}/intent")]
+ public IntentPageViewModel GetAgentIntents([FromRoute] int agentId, [FromQuery] int start, [FromQuery] int limit)
+ {
+ var intents = new List();
+
+ string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
+
+ var agentPaths = Directory.GetFiles(dataDir).Where(x => x.Contains($"agent-{agentId}-intent-")).ToList();
+ for (int i = 0; i < agentPaths.Count; i++)
+ {
+ string json = System.IO.File.ReadAllText(agentPaths[i]);
+
+ var intent = JsonConvert.DeserializeObject(json);
+
+ intents.Add(intent);
+ }
+
+ return new IntentPageViewModel { Intents = intents, Total = intents.Count };
+ }
+
+ [HttpGet("/entity/{entityId}/intent")]
+ public List GetReferencedIntentsByEntity([FromRoute] int entityId, [FromQuery] int start, [FromQuery] int limit)
+ {
+ var intents = new List();
+
+ string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
+
+ string entityPath = Directory.GetFiles(dataDir).FirstOrDefault(x => x.Contains($"-entity-{entityId}.json"));
+ var entity = JsonConvert.DeserializeObject(System.IO.File.ReadAllText(entityPath));
+
+ string agentId = entityPath.Split(Path.DirectorySeparatorChar).Last().Split('-')[1];
+
+ string agentPath = Directory.GetFiles(dataDir).FirstOrDefault(x => x.Contains($"agent-{agentId}.json"));
+ var agent = JsonConvert.DeserializeObject(System.IO.File.ReadAllText(agentPath));
+
+ var intentPaths = Directory.GetFiles(dataDir).Where(x => x.Contains($"agent-{agent.Id}-intent-")).ToList();
+
+ for (int i = 0; i < intentPaths.Count; i++)
+ {
+ string json = System.IO.File.ReadAllText(intentPaths[i]);
+
+ var intent = JsonConvert.DeserializeObject(json);
+
+ if (intent.Examples.Exists(x => x.Entities.Exists(e => e.EntityId == entityId)))
+ {
+ intents.Add(intent);
+ }
+ }
+
+ return intents;
+ }
+
+ [HttpGet("/domain/{domainId}/intent")]
+ public IntentPageViewModel GetReferencedIntentsByDomain([FromRoute] int domainId, [FromQuery] int start, [FromQuery] int limit)
+ {
+ var intents = new List();
+
+ string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate");
+
+ string domainPath = Directory.GetFiles(dataDir).FirstOrDefault(x => x.Contains($"-domain-{domainId}.json"));
+ var domain = JsonConvert.DeserializeObject(System.IO.File.ReadAllText(domainPath));
+
+ string agentId = domainPath.Split(Path.DirectorySeparatorChar).Last().Split('-')[1];
+
+ string agentPath = Directory.GetFiles(dataDir).FirstOrDefault(x => x.Contains($"agent-{agentId}.json"));
+ var agent = JsonConvert.DeserializeObject(System.IO.File.ReadAllText(agentPath));
+
+ var intentPaths = Directory.GetFiles(dataDir).Where(x => x.Contains($"agent-{agentId}-intent-")).ToList();
+
+ for (int i = 0; i < intentPaths.Count; i++)
+ {
+ string json = System.IO.File.ReadAllText(intentPaths[i]);
+
+ var intent = JsonConvert.DeserializeObject(json);
+
+ if (intent.Domain == domain.DomainName)
+ {
+ intents.Add(intent);
+ }
+ }
+
+ return new IntentPageViewModel { Intents = intents, Total = intents.Count };
+ }
+ }
+#endif
+}
diff --git a/BotSharp.RestApi/Articulate/IntentPageViewModel.cs b/BotSharp.RestApi/Articulate/IntentPageViewModel.cs
new file mode 100644
index 00000000..6bb18e9a
--- /dev/null
+++ b/BotSharp.RestApi/Articulate/IntentPageViewModel.cs
@@ -0,0 +1,14 @@
+using BotSharp.Core.Engines.Articulate;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.RestApi.Articulate
+{
+ public class IntentPageViewModel
+ {
+ public List Intents { get; set; }
+
+ public int Total { get; set; }
+ }
+}
diff --git a/BotSharp.RestApi/Articulate/SettingsController.cs b/BotSharp.RestApi/Articulate/SettingsController.cs
new file mode 100644
index 00000000..34e33c90
--- /dev/null
+++ b/BotSharp.RestApi/Articulate/SettingsController.cs
@@ -0,0 +1,28 @@
+using BotSharp.Core.Engines.Articulate;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace BotSharp.RestApi.Articulate
+{
+#if ARTICULATE
+ [Route("[controller]")]
+ public class SettingsController : ControllerBase
+ {
+ [HttpGet]
+ public SettingsModel GetSettings()
+ {
+ string dataPath = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate", "settings.json");
+
+ string json = System.IO.File.ReadAllText(dataPath);
+
+ var settings = JsonConvert.DeserializeObject(json);
+
+ return settings;
+ }
+ }
+#endif
+}
diff --git a/BotSharp.RestApi/BotSharp.RestApi.csproj b/BotSharp.RestApi/BotSharp.RestApi.csproj
index c605339c..1cb54d7d 100644
--- a/BotSharp.RestApi/BotSharp.RestApi.csproj
+++ b/BotSharp.RestApi/BotSharp.RestApi.csproj
@@ -16,7 +16,7 @@
NLU, Chatbot, Bot, AI Bot
Restful API for BotSharp.Core
AnyCPU;x64
- Debug;Release;RASA NLU;DIALOGFLOW;RASA
+ Debug;Release;RASA NLU;DIALOGFLOW;RASA;ARTICULATE
@@ -65,6 +65,12 @@
false
+
+ TRACE;ARTICULATE
+ bin\ARTICULATE\BotSharp.RestApi.xml
+ bin\ARTICULATE
+
+
diff --git a/BotSharp.RestApi/IntentController.cs b/BotSharp.RestApi/IntentController.cs
index 9dbaea48..8e9c66e1 100644
--- a/BotSharp.RestApi/IntentController.cs
+++ b/BotSharp.RestApi/IntentController.cs
@@ -8,5 +8,6 @@ namespace BotSharp.RestApi
[Route("v1/[controller]/[action]")]
public class IntentController : ControllerBase
{
+
}
}
diff --git a/BotSharp.Vision/BotSharp.Vision.csproj b/BotSharp.Vision/BotSharp.Vision.csproj
index 3982f9c9..91dedf6b 100644
--- a/BotSharp.Vision/BotSharp.Vision.csproj
+++ b/BotSharp.Vision/BotSharp.Vision.csproj
@@ -2,11 +2,15 @@
netstandard2.0
- Debug;Release;RASA;DIALOGFLOW
+ Debug;Release;RASA;DIALOGFLOW;ARTICULATE
bin\RASA
+
+ TRACE;ARTICULATE
+
+
diff --git a/BotSharp.Voice.UnitTest/BotSharp.Voice.UnitTest.csproj b/BotSharp.Voice.UnitTest/BotSharp.Voice.UnitTest.csproj
index 343a5f98..3172d24c 100644
--- a/BotSharp.Voice.UnitTest/BotSharp.Voice.UnitTest.csproj
+++ b/BotSharp.Voice.UnitTest/BotSharp.Voice.UnitTest.csproj
@@ -5,7 +5,7 @@
false
- Debug;Release;DIALOGFLOW;RASA
+ Debug;Release;DIALOGFLOW;RASA;ARTICULATE
diff --git a/BotSharp.Voice/BotSharp.Voice.csproj b/BotSharp.Voice/BotSharp.Voice.csproj
index 7d5beec3..3263df5a 100644
--- a/BotSharp.Voice/BotSharp.Voice.csproj
+++ b/BotSharp.Voice/BotSharp.Voice.csproj
@@ -2,7 +2,7 @@
netstandard2.0
- Debug;Release;RASA;DIALOGFLOW
+ Debug;Release;RASA;DIALOGFLOW;ARTICULATE
@@ -14,6 +14,10 @@
false
+
+ TRACE;ARTICULATE
+
+
diff --git a/BotSharp.WebHost/App_Data/Articulate/settings.json b/BotSharp.WebHost/App_Data/Articulate/settings.json
new file mode 100644
index 00000000..10192aaf
--- /dev/null
+++ b/BotSharp.WebHost/App_Data/Articulate/settings.json
@@ -0,0 +1,65 @@
+{
+ "ducklingURL": "http://duckling:8000",
+ "uiLanguage": "en",
+ "domainClassifierPipeline": [
+ { "name": "nlp_spacy" },
+ { "name": "tokenizer_spacy" },
+ { "name": "intent_featurizer_spacy" },
+ { "name": "intent_classifier_sklearn" }
+ ],
+ "intentClassifierPipeline": [
+ { "name": "nlp_spacy" },
+ { "name": "tokenizer_spacy" },
+ { "name": "intent_featurizer_spacy" },
+ { "name": "ner_crf" },
+ { "name": "ner_synonyms" },
+ { "name": "intent_classifier_sklearn" },
+ { "name": "ner_spacy" }
+ ],
+ "ducklingDimension": [ "amount-of-money", "distance", "duration", "email", "number", "ordinal", "phone-number", "quantity", "temperature", "time", "url", "volume" ],
+ "entityClassifierPipeline": [
+ { "name": "nlp_spacy" },
+ { "name": "tokenizer_spacy" },
+ { "name": "ner_crf" },
+ { "name": "ner_synonyms" },
+ { "name": "ner_spacy" }
+ ],
+ "defaultAgentLanguage": "en",
+ "defaultTimezone": "UTC",
+ "timezones": [ "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", "Africa/Asmara", "Africa/Asmera", "Africa/Bamako", "Africa/Bangui", "Africa/Banjul", "Africa/Bissau", "Africa/Blantyre", "Africa/Brazzaville", "Africa/Bujumbura", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/Conakry", "Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala", "Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Juba", "Africa/Kampala", "Africa/Khartoum", "Africa/Kigali", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Niamey", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo", "Africa/Sao_Tome", "Africa/Timbuktu", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Anguilla", "America/Antigua", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/ComodRivadavia", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan", "America/Atka", "America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Buenos_Aires", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Catamarca", "America/Cayenne", "America/Cayman", "America/Chicago", "America/Chihuahua", "America/Coral_Harbour", "America/Cordoba", "America/Costa_Rica", "America/Creston", "America/Cuiaba", "America/Curacao", "America/Danmarkshavn", "America/Dawson", "America/Dawson_Creek", "America/Denver", "America/Detroit", "America/Dominica", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Ensenada", "America/Fort_Wayne", "America/Fortaleza", "America/Glace_Bay", "America/Godthab", "America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana/Indianapolis", "America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Indianapolis", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Jujuy", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Knox_IN", "America/Kralendijk", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Louisville", "America/Lower_Princes", "America/Maceio", "America/Managua", "America/Manaus", "America/Marigot", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Mendoza", "America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Montreal", "America/Montserrat", "America/Nassau", "America/New_York", "America/Nipigon", "America/Nome", "America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Ojinaga", "America/Panama", "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port-au-Prince", "America/Port_of_Spain", "America/Porto_Acre", "America/Porto_Velho", "America/Puerto_Rico", "America/Rainy_River", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Rio_Branco", "America/Rosario", "America/Santa_Isabel", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Shiprock", "America/Sitka", "America/St_Barthelemy", "America/St_Johns", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Tortola", "America/Vancouver", "America/Virgin", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/McMurdo", "Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/South_Pole", "Antarctica/Syowa", "Antarctica/Troll", "Antarctica/Vostok", "Arctic/Longyearbyen", "Asia/Aden", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Ashkhabad", "Asia/Baghdad", "Asia/Bahrain", "Asia/Baku", "Asia/Bangkok", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Calcutta", "Asia/Chita", "Asia/Choibalsan", "Asia/Chongqing", "Asia/Chungking", "Asia/Colombo", "Asia/Dacca", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Gaza", "Asia/Harbin", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Istanbul", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kashgar", "Asia/Kathmandu", "Asia/Katmandu", "Asia/Khandyga", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Kuwait", "Asia/Macao", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Muscat", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qyzylorda", "Asia/Rangoon", "Asia/Riyadh", "Asia/Saigon", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Tel_Aviv", "Asia/Thimbu", "Asia/Thimphu", "Asia/Tokyo", "Asia/Ujung_Pandang", "Asia/Ulaanbaatar", "Asia/Ulan_Bator", "Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vientiane", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faeroe", "Atlantic/Faroe", "Atlantic/Jan_Mayen", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia", "Atlantic/St_Helena", "Atlantic/Stanley", "Australia/ACT", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Canberra", "Australia/Currie", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/LHI", "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/NSW", "Australia/North", "Australia/Perth", "Australia/Queensland", "Australia/South", "Australia/Sydney", "Australia/Tasmania", "Australia/Victoria", "Australia/West", "Australia/Yancowinna", "Brazil/Acre", "Brazil/DeNoronha", "Brazil/East", "Brazil/West", "CET", "CST6CDT", "Canada/Atlantic", "Canada/Central", "Canada/East-Saskatchewan", "Canada/Eastern", "Canada/Mountain", "Canada/Newfoundland", "Canada/Pacific", "Canada/Saskatchewan", "Canada/Yukon", "Chile/Continental", "Chile/EasterIsland", "Cuba", "EET", "EST", "EST5EDT", "Egypt", "Eire", "Etc/GMT+0", "Etc/GMT+1", "Etc/GMT+10", "Etc/GMT+11", "Etc/GMT+12", "Etc/GMT+2", "Etc/GMT+3", "Etc/GMT+4", "Etc/GMT+5", "Etc/GMT+6", "Etc/GMT+7", "Etc/GMT+8", "Etc/GMT+9", "Etc/GMT-0", "Etc/GMT-1", "Etc/GMT-10", "Etc/GMT-11", "Etc/GMT-12", "Etc/GMT-13", "Etc/GMT-14", "Etc/GMT-2", "Etc/GMT-3", "Etc/GMT-4", "Etc/GMT-5", "Etc/GMT-6", "Etc/GMT-7", "Etc/GMT-8", "Etc/GMT-9", "Etc/GMT", "Etc/GMT0", "Etc/Greenwich", "Etc/UCT", "Etc/UTC", "Etc/Universal", "Etc/Zulu", "Europe/Amsterdam", "Europe/Andorra", "Europe/Athens", "Europe/Belfast", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Busingen", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Guernsey", "Europe/Helsinki", "Europe/Isle_of_Man", "Europe/Istanbul", "Europe/Jersey", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Lisbon", "Europe/Ljubljana", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Mariehamn", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Nicosia", "Europe/Oslo", "Europe/Paris", "Europe/Podgorica", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Simferopol", "Europe/Skopje", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane", "Europe/Tiraspol", "Europe/Uzhgorod", "Europe/Vaduz", "Europe/Vatican", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zaporozhye", "Europe/Zurich", "GB-Eire", "GB", "GMT+0", "GMT-0", "GMT", "GMT0", "Greenwich", "HST", "Hongkong", "Iceland", "Indian/Antananarivo", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos", "Indian/Comoro", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius", "Indian/Mayotte", "Indian/Reunion", "Iran", "Israel", "Jamaica", "Japan", "Kwajalein", "Libya", "MET", "MST", "MST7MDT", "Mexico/BajaNorte", "Mexico/BajaSur", "Mexico/General", "NZ-CHAT", "NZ", "Navajo", "PRC", "PST8PDT", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham", "Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Johnston", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Midway", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Ponape", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Saipan", "Pacific/Samoa", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Truk", "Pacific/Wake", "Pacific/Wallis", "Pacific/Yap", "Poland", "Portugal", "ROC", "ROK", "Singapore", "Turkey", "UCT", "US/Alaska", "US/Aleutian", "US/Arizona", "US/Central", "US/East-Indiana", "US/Eastern", "US/Hawaii", "US/Indiana-Starke", "US/Michigan", "US/Mountain", "US/Pacific-New", "US/Pacific", "US/Samoa", "UTC", "Universal", "W-SU", "WET", "Zulu" ],
+ "defaultAgentFallbackResponses": [ "Sorry can you rephrase that?", "I'm still learning to speak with humans. What you mean?" ],
+ "rasaURL": "http://rasa:5000",
+ "spacyPretrainedEntities": [ "PERSON", "NORP", "FAC", "ORG", "GPE", "LOC", "PRODUCT", "EVENT", "WORK_OF_ART", "LAW", "LANGUAGE", "DATE", "TIME", "PERCENT", "MONEY", "QUANTITY", "ORDINAL", "CARDINAL" ],
+ "agentLanguages": [
+ {
+ "text": "English",
+ "value": "en"
+ },
+ {
+ "text": "French",
+ "value": "fr"
+ },
+ {
+ "text": "German",
+ "value": "de"
+ },
+ {
+ "text": "Portuguese",
+ "value": "pt"
+ },
+ {
+ "text": "Spanish",
+ "value": "es"
+ },
+ {
+ "text": "简体中文",
+ "value": "zh"
+ }
+ ],
+ "uiLanguages": [
+ {
+ "text": "English",
+ "value": "en"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/BotSharp.WebHost/App_Data/Articulate/swagger.json b/BotSharp.WebHost/App_Data/Articulate/swagger.json
new file mode 100644
index 00000000..d96fd287
--- /dev/null
+++ b/BotSharp.WebHost/App_Data/Articulate/swagger.json
@@ -0,0 +1,2693 @@
+{
+ "swagger": "2.0",
+ "host": "localhost:7500",
+ "basePath": "/",
+ "schemes": [ "http" ],
+ "info": {
+ "title": "Articulate API Documentation",
+ "version": "0.0.1",
+ "contact": { "name": "Smart Platform Group" }
+ },
+ "tags": [],
+ "paths": {
+ "/agent": {
+ "get": {
+ "summary": "Find all instances of the model from the data source",
+ "operationId": "getAgent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postAgent",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 1" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/settings": {
+ "get": {
+ "summary": "Return all the setings of the system",
+ "operationId": "getSettings",
+ "tags": [ "settings" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Modifies the settings",
+ "operationId": "putSettings",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/settings" }
+ }
+ ],
+ "tags": [ "settings" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getAgentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putAgentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 29" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a model instance by id from the data source",
+ "operationId": "deleteAgentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/context/{sessionId}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getContextSessionid",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "context" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postContextSessionid",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 21" }
+ }
+ ],
+ "tags": [ "context" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Deletes a session",
+ "operationId": "deleteContextSessionid",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "context" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/doc/{id}": {
+ "get": {
+ "summary": "Return all the setings of the system",
+ "operationId": "getDocId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the document",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "doc" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain/{id}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getDomainId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putDomainId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 30" }
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a model instance by id from the data source",
+ "operationId": "deleteDomainId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/entity/{id}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getEntityId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putEntityId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 32" }
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a model instance by id from the data source",
+ "operationId": "deleteEntityId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent/{id}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getIntentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putIntentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 37" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a model instance by id from the data source",
+ "operationId": "deleteIntentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/settings/{name}": {
+ "get": {
+ "summary": "Return the settings value for the specified name",
+ "operationId": "getSettingsName",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The name of the setting",
+ "name": "name",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "settings" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/name/{agentName}": {
+ "get": {
+ "summary": "Find a model instance by name from the data source",
+ "operationId": "getAgentNameAgentname",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The name of the agent",
+ "x-convert": { "trim": true },
+ "name": "agentName",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/export": {
+ "get": {
+ "summary": "Export agent data",
+ "operationId": "getAgentIdExport",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "boolean",
+ "description": "Flag to indicate if method should exports ids and ancestors of an element",
+ "default": false,
+ "name": "withReferences",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/postFormat": {
+ "get": {
+ "summary": "Find a post format by agent id from the data source",
+ "operationId": "getAgentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a post format for the agent and persist it into the data source",
+ "operationId": "postAgentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 22" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the post format of the agent and persist it into the data source",
+ "operationId": "putAgentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/postFormat" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a post format by agent id from the data source",
+ "operationId": "deleteAgentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain": {
+ "get": {
+ "summary": "Find list of domains linked with a model instance specified by id",
+ "operationId": "getAgentIdDomain",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those domains with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/train": {
+ "get": {
+ "summary": "Train the specified agent",
+ "operationId": "getAgentIdTrain",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/parse": {
+ "get": {
+ "summary": "Parse a text for each domain in the agent",
+ "operationId": "getAgentIdParse",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Text to parse",
+ "name": "text",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Timezone for duckling parse. Default UTC",
+ "name": "timezone",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Parse a text for each domain in the agent",
+ "operationId": "postAgentIdParse",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 25" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/settings": {
+ "get": {
+ "summary": "Return all the setings of the agent",
+ "operationId": "getAgentIdSettings",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Modifies the agent settings",
+ "operationId": "putAgentIdSettings",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/settings" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/intent": {
+ "get": {
+ "summary": "Find list of intents linked with a model instance specified by id",
+ "operationId": "getAgentIdIntent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those intents with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/webhook": {
+ "get": {
+ "summary": "Find a webhook by agent id from the data source",
+ "operationId": "getAgentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a webhook for the agent and persist it into the data source",
+ "operationId": "postAgentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 23" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the webhook of the agent and persist it into the data source",
+ "operationId": "putAgentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 38" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a webhook instance by id from the data source",
+ "operationId": "deleteAgentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/converse": {
+ "get": {
+ "summary": "Converse with a trained agent",
+ "operationId": "getAgentIdConverse",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Text to parse",
+ "name": "text",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Timezone for duckling parse. Default UTC",
+ "name": "timezone",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Converse with a trained agent",
+ "operationId": "postAgentIdConverse",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 24" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/entity": {
+ "get": {
+ "summary": "Find list of entities linked with a model instance specified by id",
+ "operationId": "getAgentIdEntity",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those entities with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain/{id}/intent": {
+ "get": {
+ "summary": "Find list of intents linked with a domain",
+ "operationId": "getDomainIdIntent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those intents with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain/{id}/train": {
+ "get": {
+ "summary": "Train the specified domain",
+ "operationId": "getDomainIdTrain",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain/{id}/entity": {
+ "get": {
+ "summary": "Find list of entities linked with a domain",
+ "operationId": "getDomainIdEntity",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/entity/{id}/intent": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getEntityIdIntent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent/{id}/postFormat": {
+ "get": {
+ "summary": "Find a post format by intent id from the data source",
+ "operationId": "getIntentIdPostformat",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the intent",
+ "x-convert": { "trim": true },
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a post format for the intent and persist it into the data source",
+ "operationId": "postIntentIdPostformat",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the intent",
+ "x-convert": { "trim": true },
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 28" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the post format of the intent and persist it into the data source",
+ "operationId": "putIntentIdPostformat",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the intent",
+ "x-convert": { "trim": true },
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 42" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a webhook instance by id from the data source",
+ "operationId": "deleteIntentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent/{id}/scenario": {
+ "get": {
+ "summary": "Find a scenario by intent id from the data source",
+ "operationId": "getIntentIdScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a scenario for the intent and persist it into the data source",
+ "operationId": "postIntentIdScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 26" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the scenario of the intent and persist it into the data source",
+ "operationId": "putIntentIdScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 40" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a scenario instance by id from the data source",
+ "operationId": "deleteIntentIdScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent/{id}/webhook": {
+ "get": {
+ "summary": "Find a webhook by intent id from the data source",
+ "operationId": "getIntentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a webhook for the intent and persist it into the data source",
+ "operationId": "postIntentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 27" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the webhook of the intent and persist it into the data source",
+ "operationId": "putIntentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 41" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a webhook instance by id from the data source",
+ "operationId": "deleteIntentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}": {
+ "get": {
+ "summary": "Find a domain by id that belongs to the specified model instance",
+ "operationId": "getAgentIdDomainDomainid",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/settings/{name}": {
+ "get": {
+ "summary": "Return the settings value for the specified name for the agent",
+ "operationId": "getAgentIdSettingsName",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "The name of the setting",
+ "name": "name",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/entity/{entityId}": {
+ "get": {
+ "summary": "Find an entity by id that belongs to the specified model instance",
+ "operationId": "getAgentIdEntityEntityid",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "entityId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent": {
+ "get": {
+ "summary": "Find list of intents for the given domain and agent",
+ "operationId": "getAgentIdDomainDomainidIntent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those intents with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent/{intentId}": {
+ "get": {
+ "summary": "Find an intent by id given a domain and an agent",
+ "operationId": "getAgentIdDomainDomainidIntentIntentid",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "intentId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent/{intentId}/scenario": {
+ "get": {
+ "summary": "Find the scenario related with an intent, for the given domain and agent",
+ "operationId": "getAgentIdDomainDomainidIntentIntentidScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "intentId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent/{intentId}/webhook": {
+ "get": {
+ "summary": "Find the webhook related with an intent, for the given domain and agent",
+ "operationId": "getAgentIdDomainDomainidIntentIntentidWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "intentId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent/{intentId}/postFormat": {
+ "get": {
+ "summary": "Find the post format related with an intent, for the given domain and agent",
+ "operationId": "getAgentIdDomainDomainidIntentIntentidPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "intentId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain": {
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postDomain",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 2" }
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/entity": {
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postEntity",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 4" }
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent": {
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postIntent",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 8" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/import": {
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source based on a given dataset",
+ "operationId": "postAgentImport",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 20" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/context/{sessionId}/{id}": {
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putContextSessionidId",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Id of the context element",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 39" }
+ }
+ ],
+ "tags": [ "context" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "fallbackResponses": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "Model 1": {
+ "type": "object",
+ "properties": {
+ "agentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "description": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "language": {
+ "type": "string",
+ "enum": [ "en", "es", "de", "fr", "pt" ],
+ "x-convert": { "trim": true }
+ },
+ "timezone": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "domainClassifierThreshold": { "type": "number" },
+ "fallbackResponses": {
+ "$ref": "#/definitions/fallbackResponses",
+ "type": "array"
+ },
+ "extraTrainingData": { "type": "boolean" },
+ "enableModelsPerDomain": { "type": "boolean" }
+ },
+ "required": [ "agentName", "language", "timezone", "useWebhook", "usePostFormat", "domainClassifierThreshold", "fallbackResponses" ]
+ },
+ "Model 2": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domainName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "enabled": { "type": "boolean" },
+ "intentThreshold": { "type": "number" },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "model": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extraTrainingData": { "type": "boolean" }
+ },
+ "required": [ "agent", "domainName", "enabled", "intentThreshold" ]
+ },
+ "synonyms": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "Model 3": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "synonyms": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "value", "synonyms" ]
+ },
+ "examples": {
+ "type": "array",
+ "minItems": 1,
+ "items": { "$ref": "#/definitions/Model 3" }
+ },
+ "Model 4": {
+ "type": "object",
+ "properties": {
+ "entityName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "uiColor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "regex": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "type": {
+ "type": "string",
+ "default": "learned",
+ "enum": [ "learned", "regex" ],
+ "x-convert": { "trim": true }
+ },
+ "examples": {
+ "$ref": "#/definitions/examples",
+ "type": "array"
+ }
+ },
+ "required": [ "entityName", "agent", "examples" ]
+ },
+ "Model 5": {
+ "type": "object",
+ "properties": {
+ "entityId": { "type": "number" },
+ "start": { "type": "number" },
+ "end": { "type": "number" },
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entity": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extractor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "entityId", "start", "end", "value", "entity" ]
+ },
+ "entities": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 5" }
+ },
+ "Model 6": {
+ "type": "object",
+ "properties": {
+ "userSays": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entities": {
+ "$ref": "#/definitions/entities",
+ "type": "array"
+ }
+ },
+ "required": [ "userSays", "entities" ]
+ },
+ "Model 7": {
+ "type": "array",
+ "minItems": 2,
+ "items": { "$ref": "#/definitions/Model 6" }
+ },
+ "Model 8": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domain": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "intentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "examples": {
+ "$ref": "#/definitions/Model 7",
+ "type": "array"
+ }
+ },
+ "required": [ "agent", "domain", "intentName", "useWebhook", "usePostFormat", "examples" ]
+ },
+ "postFormat": {
+ "type": "object",
+ "properties": {
+ "postFormatPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "postFormatPayload" ]
+ },
+ "webhook": {
+ "type": "object",
+ "properties": {
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "webhookUrl", "webhookVerb", "webhookPayloadType" ]
+ },
+ "settings": { "type": "object" },
+ "Model 9": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "synonyms": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "value" ]
+ },
+ "Model 10": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 9" }
+ },
+ "Model 11": {
+ "type": "object",
+ "properties": {
+ "entityName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "uiColor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "type": {
+ "type": "string",
+ "default": "learned",
+ "enum": [ "learned", "regex" ],
+ "x-convert": { "trim": true }
+ },
+ "regex": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "examples": {
+ "$ref": "#/definitions/Model 10",
+ "type": "array"
+ }
+ },
+ "required": [ "entityName", "examples" ]
+ },
+ "Model 12": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 11" }
+ },
+ "Model 13": {
+ "type": "object",
+ "properties": {
+ "start": { "type": "number" },
+ "end": { "type": "number" },
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entity": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extractor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "start", "end", "value", "entity" ]
+ },
+ "Model 14": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 13" }
+ },
+ "Model 15": {
+ "type": "object",
+ "properties": {
+ "userSays": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entities": {
+ "$ref": "#/definitions/Model 14",
+ "type": "array"
+ }
+ },
+ "required": [ "userSays", "entities" ]
+ },
+ "Model 16": {
+ "type": "array",
+ "minItems": 2,
+ "items": { "$ref": "#/definitions/Model 15" }
+ },
+ "Model 17": {
+ "type": "object",
+ "properties": {
+ "slotName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entity": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "isList": { "type": "boolean" },
+ "isRequired": { "type": "boolean" },
+ "textPrompts": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "slotName", "entity", "isList", "isRequired" ]
+ },
+ "slots": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 17" }
+ },
+ "scenario": {
+ "type": "object",
+ "properties": {
+ "scenarioName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "slots": {
+ "$ref": "#/definitions/slots",
+ "type": "array"
+ },
+ "intentResponses": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "scenarioName", "intentResponses" ]
+ },
+ "Model 18": {
+ "type": "object",
+ "properties": {
+ "intentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "examples": {
+ "$ref": "#/definitions/Model 16",
+ "type": "array"
+ },
+ "scenario": { "$ref": "#/definitions/scenario" },
+ "useWebhook": { "type": "boolean" },
+ "webhook": { "$ref": "#/definitions/webhook" },
+ "usePostFormat": { "type": "boolean" },
+ "postFormat": { "$ref": "#/definitions/postFormat" }
+ },
+ "required": [ "intentName", "examples", "useWebhook", "usePostFormat" ]
+ },
+ "intents": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 18" }
+ },
+ "Model 19": {
+ "type": "object",
+ "properties": {
+ "domainName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "enabled": { "type": "boolean" },
+ "intentThreshold": { "type": "number" },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "model": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "status": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extraTrainingData": { "type": "boolean" },
+ "intents": {
+ "$ref": "#/definitions/intents",
+ "type": "array"
+ }
+ },
+ "required": [ "domainName", "enabled", "intentThreshold" ]
+ },
+ "domains": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 19" }
+ },
+ "Model 20": {
+ "type": "object",
+ "properties": {
+ "agentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "description": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "language": {
+ "type": "string",
+ "enum": [ "en", "es", "de", "fr", "pt" ],
+ "x-convert": { "trim": true }
+ },
+ "timezone": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domainClassifierThreshold": { "type": "number" },
+ "fallbackResponses": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "postFormat": { "$ref": "#/definitions/postFormat" },
+ "status": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "extraTrainingData": { "type": "boolean" },
+ "enableModelsPerDomain": { "type": "boolean" },
+ "model": { "type": "string" },
+ "webhook": { "$ref": "#/definitions/webhook" },
+ "settings": { "$ref": "#/definitions/settings" },
+ "entities": {
+ "$ref": "#/definitions/Model 12",
+ "type": "array"
+ },
+ "domains": {
+ "$ref": "#/definitions/domains",
+ "type": "array"
+ }
+ },
+ "required": [ "agentName", "language", "timezone", "domainClassifierThreshold", "fallbackResponses", "useWebhook", "usePostFormat" ]
+ },
+ "Model 21": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "scenario": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "slots": { "$ref": "#/definitions/settings" }
+ },
+ "required": [ "name", "scenario" ]
+ },
+ "Model 22": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "postFormatPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "id": { "type": "string" }
+ },
+ "required": [ "agent", "postFormatPayload" ]
+ },
+ "Model 23": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "agent", "webhookUrl", "webhookVerb", "webhookPayloadType" ]
+ },
+ "Model 24": {
+ "type": "object",
+ "properties": {
+ "sessionId": {
+ "type": "string",
+ "description": "Id of the session"
+ },
+ "text": {
+ "type": "string",
+ "description": "Text to parse"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone for duckling parse. Default UTC"
+ }
+ },
+ "required": [ "sessionId", "text" ]
+ },
+ "Model 25": {
+ "type": "object",
+ "properties": {
+ "text": {
+ "type": "string",
+ "description": "Text to parse"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone for duckling parse. Default UTC"
+ }
+ },
+ "required": [ "text" ]
+ },
+ "Model 26": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domain": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "intent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "scenarioName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "slots": {
+ "$ref": "#/definitions/slots",
+ "type": "array"
+ },
+ "intentResponses": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "agent", "domain", "intent", "scenarioName" ]
+ },
+ "Model 27": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domain": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "intent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML", "URL Encoded" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookUsername": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookPassword": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "agent", "domain", "intent", "webhookUrl", "webhookVerb", "webhookPayloadType" ]
+ },
+ "Model 28": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domain": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "intent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "postFormatPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "agent", "domain", "intent", "postFormatPayload" ]
+ },
+ "Model 29": {
+ "type": "object",
+ "properties": {
+ "agentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "description": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "language": {
+ "type": "string",
+ "enum": [ "en", "es", "de", "fr", "pt" ],
+ "x-convert": { "trim": true }
+ },
+ "timezone": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "domainClassifierThreshold": { "type": "number" },
+ "fallbackResponses": {
+ "$ref": "#/definitions/fallbackResponses",
+ "type": "array"
+ },
+ "status": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "extraTrainingData": { "type": "boolean" },
+ "enableModelsPerDomain": { "type": "boolean" },
+ "model": { "type": "string" }
+ }
+ },
+ "Model 30": {
+ "type": "object",
+ "properties": {
+ "domainName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "enabled": { "type": "boolean" },
+ "intentThreshold": { "type": "number" },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "status": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "model": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extraTrainingData": { "type": "boolean" }
+ }
+ },
+ "Model 31": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 3" }
+ },
+ "Model 32": {
+ "type": "object",
+ "properties": {
+ "entityName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "uiColor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "regex": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "type": {
+ "type": "string",
+ "default": "learned",
+ "enum": [ "learned", "regex" ],
+ "x-convert": { "trim": true }
+ },
+ "examples": {
+ "$ref": "#/definitions/Model 31",
+ "type": "array"
+ }
+ }
+ },
+ "Model 33": {
+ "type": "object",
+ "properties": {
+ "entityId": { "type": "number" },
+ "start": { "type": "number" },
+ "end": { "type": "number" },
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entity": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extractor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "start", "end", "value", "entity" ]
+ },
+ "Model 34": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 33" }
+ },
+ "Model 35": {
+ "type": "object",
+ "properties": {
+ "userSays": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entities": {
+ "$ref": "#/definitions/Model 34",
+ "type": "array"
+ }
+ },
+ "required": [ "userSays", "entities" ]
+ },
+ "Model 36": {
+ "type": "array",
+ "minItems": 2,
+ "items": { "$ref": "#/definitions/Model 35" }
+ },
+ "Model 37": {
+ "type": "object",
+ "properties": {
+ "intentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "examples": {
+ "$ref": "#/definitions/Model 36",
+ "type": "array"
+ }
+ }
+ },
+ "Model 38": {
+ "type": "object",
+ "properties": {
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ }
+ },
+ "Model 39": {
+ "type": "object",
+ "properties": { "slots": { "$ref": "#/definitions/settings" } }
+ },
+ "Model 40": {
+ "type": "object",
+ "properties": {
+ "scenarioName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "slots": {
+ "$ref": "#/definitions/slots",
+ "type": "array"
+ },
+ "intentResponses": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ }
+ },
+ "Model 41": {
+ "type": "object",
+ "properties": {
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML", "URL Encoded" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookUsername": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookPassword": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ }
+ },
+ "Model 42": {
+ "type": "object",
+ "properties": {
+ "postFormatPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/BotSharp.WebHost/BotSharp.WebHost.csproj b/BotSharp.WebHost/BotSharp.WebHost.csproj
index f9268d89..9730e053 100644
--- a/BotSharp.WebHost/BotSharp.WebHost.csproj
+++ b/BotSharp.WebHost/BotSharp.WebHost.csproj
@@ -4,7 +4,7 @@
netcoreapp2.1
Portable;win10-x64;centos.7-x64
AnyCPU;x64
- Debug;Release;DIALOGFLOW;RASA
+ Debug;Release;DIALOGFLOW;RASA;ARTICULATE
@@ -21,6 +21,11 @@
DEBUG;TRACE;DIALOGFLOW;NETCOREAPP;NETCOREAPP2_1
+
+ DEBUG;TRACE;ARTICULATE
+ false
+
+
diff --git a/BotSharp.WebHost/Program.cs b/BotSharp.WebHost/Program.cs
index 8e7c72ff..9b1daf36 100644
--- a/BotSharp.WebHost/Program.cs
+++ b/BotSharp.WebHost/Program.cs
@@ -34,7 +34,13 @@ namespace BotSharp.WebHost
config.AddJsonFile(setting, optional: false, reloadOnChange: true);
});
})
+#if ARTICULATE
+ .UseUrls("http://0.0.0.0:7500")
+#elif RASA
.UseUrls("http://0.0.0.0:5000")
+#else
+ .UseUrls("http://0.0.0.0:3112")
+#endif
.UseStartup()
.Build();
}
diff --git a/BotSharp.WebHost/Settings/swagger.json b/BotSharp.WebHost/Settings/swagger.json
index 18f714be..42e7c010 100644
--- a/BotSharp.WebHost/Settings/swagger.json
+++ b/BotSharp.WebHost/Settings/swagger.json
@@ -1,11 +1,11 @@
{
"Swagger": {
"Contact": {
- "Email": "haiping008@gmail.com",
+ "Email": "botsharp2018@gmail.com",
"Name": "BotSharp AI",
"Url": "https://github.com/Oceania2018"
},
- "Description": "BotSharp is a chatbot platform written in C# (.net core), and it's developed for enterprise usage.",
+ "Description": "BotSharp is a chatbot platform builder running in .NET Core",
"Endpoint": "/swagger/v1/swagger.json",
"License": {
"Name": "Apache License 2.0",
diff --git a/BotSharp.WebHost/Startup.cs b/BotSharp.WebHost/Startup.cs
index 0e7fb90d..91cb9792 100644
--- a/BotSharp.WebHost/Startup.cs
+++ b/BotSharp.WebHost/Startup.cs
@@ -83,6 +83,8 @@ namespace BotSharp.WebHost
app.UseDeveloperExceptionPage();
}
+ app.UseCors(builder => builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials());
+
app.UseDefaultFiles();
app.UseStaticFiles();
@@ -95,6 +97,8 @@ namespace BotSharp.WebHost
info.Title += " (DIALOGFLOW)";
#elif RASA
info.Title += " (RASA)";
+#elif ARTICULATE
+ info.Title += " (ARTICULATE)";
#endif
c.SupportedSubmitMethods(SubmitMethod.Get, SubmitMethod.Post, SubmitMethod.Put, SubmitMethod.Patch, SubmitMethod.Delete);
@@ -105,8 +109,6 @@ namespace BotSharp.WebHost
c.InjectStylesheet(Configuration.GetValue("Swagger:Stylesheet"));
});
- app.UseCors(builder => builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials());
-
app.Use(async (context, next) =>
{
string token = context.Request.Headers["Authorization"];
diff --git a/BotSharp.WebHost/wwwroot/swagger.json b/BotSharp.WebHost/wwwroot/swagger.json
new file mode 100644
index 00000000..d96fd287
--- /dev/null
+++ b/BotSharp.WebHost/wwwroot/swagger.json
@@ -0,0 +1,2693 @@
+{
+ "swagger": "2.0",
+ "host": "localhost:7500",
+ "basePath": "/",
+ "schemes": [ "http" ],
+ "info": {
+ "title": "Articulate API Documentation",
+ "version": "0.0.1",
+ "contact": { "name": "Smart Platform Group" }
+ },
+ "tags": [],
+ "paths": {
+ "/agent": {
+ "get": {
+ "summary": "Find all instances of the model from the data source",
+ "operationId": "getAgent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postAgent",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 1" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/settings": {
+ "get": {
+ "summary": "Return all the setings of the system",
+ "operationId": "getSettings",
+ "tags": [ "settings" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Modifies the settings",
+ "operationId": "putSettings",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/settings" }
+ }
+ ],
+ "tags": [ "settings" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getAgentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putAgentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 29" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a model instance by id from the data source",
+ "operationId": "deleteAgentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/context/{sessionId}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getContextSessionid",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "context" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postContextSessionid",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 21" }
+ }
+ ],
+ "tags": [ "context" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Deletes a session",
+ "operationId": "deleteContextSessionid",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "context" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/doc/{id}": {
+ "get": {
+ "summary": "Return all the setings of the system",
+ "operationId": "getDocId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the document",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "doc" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain/{id}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getDomainId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putDomainId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 30" }
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a model instance by id from the data source",
+ "operationId": "deleteDomainId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/entity/{id}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getEntityId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putEntityId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 32" }
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a model instance by id from the data source",
+ "operationId": "deleteEntityId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent/{id}": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getIntentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putIntentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 37" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a model instance by id from the data source",
+ "operationId": "deleteIntentId",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/settings/{name}": {
+ "get": {
+ "summary": "Return the settings value for the specified name",
+ "operationId": "getSettingsName",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The name of the setting",
+ "name": "name",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "settings" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/name/{agentName}": {
+ "get": {
+ "summary": "Find a model instance by name from the data source",
+ "operationId": "getAgentNameAgentname",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The name of the agent",
+ "x-convert": { "trim": true },
+ "name": "agentName",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/export": {
+ "get": {
+ "summary": "Export agent data",
+ "operationId": "getAgentIdExport",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "boolean",
+ "description": "Flag to indicate if method should exports ids and ancestors of an element",
+ "default": false,
+ "name": "withReferences",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/postFormat": {
+ "get": {
+ "summary": "Find a post format by agent id from the data source",
+ "operationId": "getAgentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a post format for the agent and persist it into the data source",
+ "operationId": "postAgentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 22" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the post format of the agent and persist it into the data source",
+ "operationId": "putAgentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/postFormat" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a post format by agent id from the data source",
+ "operationId": "deleteAgentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain": {
+ "get": {
+ "summary": "Find list of domains linked with a model instance specified by id",
+ "operationId": "getAgentIdDomain",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those domains with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/train": {
+ "get": {
+ "summary": "Train the specified agent",
+ "operationId": "getAgentIdTrain",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/parse": {
+ "get": {
+ "summary": "Parse a text for each domain in the agent",
+ "operationId": "getAgentIdParse",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Text to parse",
+ "name": "text",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Timezone for duckling parse. Default UTC",
+ "name": "timezone",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Parse a text for each domain in the agent",
+ "operationId": "postAgentIdParse",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 25" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/settings": {
+ "get": {
+ "summary": "Return all the setings of the agent",
+ "operationId": "getAgentIdSettings",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Modifies the agent settings",
+ "operationId": "putAgentIdSettings",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/settings" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/intent": {
+ "get": {
+ "summary": "Find list of intents linked with a model instance specified by id",
+ "operationId": "getAgentIdIntent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those intents with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/webhook": {
+ "get": {
+ "summary": "Find a webhook by agent id from the data source",
+ "operationId": "getAgentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a webhook for the agent and persist it into the data source",
+ "operationId": "postAgentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 23" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the webhook of the agent and persist it into the data source",
+ "operationId": "putAgentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 38" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a webhook instance by id from the data source",
+ "operationId": "deleteAgentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/converse": {
+ "get": {
+ "summary": "Converse with a trained agent",
+ "operationId": "getAgentIdConverse",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Text to parse",
+ "name": "text",
+ "in": "query",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Timezone for duckling parse. Default UTC",
+ "name": "timezone",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Converse with a trained agent",
+ "operationId": "postAgentIdConverse",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 24" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/entity": {
+ "get": {
+ "summary": "Find list of entities linked with a model instance specified by id",
+ "operationId": "getAgentIdEntity",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those entities with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain/{id}/intent": {
+ "get": {
+ "summary": "Find list of intents linked with a domain",
+ "operationId": "getDomainIdIntent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those intents with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain/{id}/train": {
+ "get": {
+ "summary": "Train the specified domain",
+ "operationId": "getDomainIdTrain",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain/{id}/entity": {
+ "get": {
+ "summary": "Find list of entities linked with a domain",
+ "operationId": "getDomainIdEntity",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/entity/{id}/intent": {
+ "get": {
+ "summary": "Find a model instance by id from the data source",
+ "operationId": "getEntityIdIntent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent/{id}/postFormat": {
+ "get": {
+ "summary": "Find a post format by intent id from the data source",
+ "operationId": "getIntentIdPostformat",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the intent",
+ "x-convert": { "trim": true },
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a post format for the intent and persist it into the data source",
+ "operationId": "postIntentIdPostformat",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the intent",
+ "x-convert": { "trim": true },
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 28" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the post format of the intent and persist it into the data source",
+ "operationId": "putIntentIdPostformat",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the intent",
+ "x-convert": { "trim": true },
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 42" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a webhook instance by id from the data source",
+ "operationId": "deleteIntentIdPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent/{id}/scenario": {
+ "get": {
+ "summary": "Find a scenario by intent id from the data source",
+ "operationId": "getIntentIdScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a scenario for the intent and persist it into the data source",
+ "operationId": "postIntentIdScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 26" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the scenario of the intent and persist it into the data source",
+ "operationId": "putIntentIdScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 40" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a scenario instance by id from the data source",
+ "operationId": "deleteIntentIdScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent/{id}/webhook": {
+ "get": {
+ "summary": "Find a webhook by intent id from the data source",
+ "operationId": "getIntentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "post": {
+ "summary": "Create a new instance of a webhook for the intent and persist it into the data source",
+ "operationId": "postIntentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 27" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "put": {
+ "summary": "Update attributes of the webhook of the intent and persist it into the data source",
+ "operationId": "putIntentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 41" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ },
+ "delete": {
+ "summary": "Delete a webhook instance by id from the data source",
+ "operationId": "deleteIntentIdWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}": {
+ "get": {
+ "summary": "Find a domain by id that belongs to the specified model instance",
+ "operationId": "getAgentIdDomainDomainid",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/settings/{name}": {
+ "get": {
+ "summary": "Return the settings value for the specified name for the agent",
+ "operationId": "getAgentIdSettingsName",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "The id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "The name of the setting",
+ "name": "name",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/entity/{entityId}": {
+ "get": {
+ "summary": "Find an entity by id that belongs to the specified model instance",
+ "operationId": "getAgentIdEntityEntityid",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the entity",
+ "name": "entityId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent": {
+ "get": {
+ "summary": "Find list of intents for the given domain and agent",
+ "operationId": "getAgentIdDomainDomainidIntent",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "The index of the first element to return. 0 is the default start.",
+ "name": "start",
+ "in": "query"
+ },
+ {
+ "type": "number",
+ "description": "Number of elements to return from start. All the elements are returned by default",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "description": "String that will filter values to return only those intents with part of this filter in their names",
+ "name": "filter",
+ "in": "query"
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent/{intentId}": {
+ "get": {
+ "summary": "Find an intent by id given a domain and an agent",
+ "operationId": "getAgentIdDomainDomainidIntentIntentid",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "intentId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent/{intentId}/scenario": {
+ "get": {
+ "summary": "Find the scenario related with an intent, for the given domain and agent",
+ "operationId": "getAgentIdDomainDomainidIntentIntentidScenario",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "intentId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent/{intentId}/webhook": {
+ "get": {
+ "summary": "Find the webhook related with an intent, for the given domain and agent",
+ "operationId": "getAgentIdDomainDomainidIntentIntentidWebhook",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "intentId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/{id}/domain/{domainId}/intent/{intentId}/postFormat": {
+ "get": {
+ "summary": "Find the post format related with an intent, for the given domain and agent",
+ "operationId": "getAgentIdDomainDomainidIntentIntentidPostformat",
+ "parameters": [
+ {
+ "type": "number",
+ "description": "Id of the agent",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the domain",
+ "name": "domainId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "number",
+ "description": "Id of the intent",
+ "name": "intentId",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/domain": {
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postDomain",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 2" }
+ }
+ ],
+ "tags": [ "domain" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/entity": {
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postEntity",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 4" }
+ }
+ ],
+ "tags": [ "entity" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/intent": {
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source",
+ "operationId": "postIntent",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 8" }
+ }
+ ],
+ "tags": [ "intent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/agent/import": {
+ "post": {
+ "summary": "Create a new instance of the model and persist it into the data source based on a given dataset",
+ "operationId": "postAgentImport",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 20" }
+ }
+ ],
+ "tags": [ "agent" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ },
+ "/context/{sessionId}/{id}": {
+ "put": {
+ "summary": "Update attributes for a model instance and persist it into the data source",
+ "operationId": "putContextSessionidId",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Id of the session",
+ "name": "sessionId",
+ "in": "path",
+ "required": true
+ },
+ {
+ "type": "string",
+ "description": "Id of the context element",
+ "name": "id",
+ "in": "path",
+ "required": true
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": { "$ref": "#/definitions/Model 39" }
+ }
+ ],
+ "tags": [ "context" ],
+ "responses": {
+ "default": {
+ "schema": { "type": "string" },
+ "description": "Successful"
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "fallbackResponses": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "Model 1": {
+ "type": "object",
+ "properties": {
+ "agentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "description": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "language": {
+ "type": "string",
+ "enum": [ "en", "es", "de", "fr", "pt" ],
+ "x-convert": { "trim": true }
+ },
+ "timezone": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "domainClassifierThreshold": { "type": "number" },
+ "fallbackResponses": {
+ "$ref": "#/definitions/fallbackResponses",
+ "type": "array"
+ },
+ "extraTrainingData": { "type": "boolean" },
+ "enableModelsPerDomain": { "type": "boolean" }
+ },
+ "required": [ "agentName", "language", "timezone", "useWebhook", "usePostFormat", "domainClassifierThreshold", "fallbackResponses" ]
+ },
+ "Model 2": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domainName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "enabled": { "type": "boolean" },
+ "intentThreshold": { "type": "number" },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "model": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extraTrainingData": { "type": "boolean" }
+ },
+ "required": [ "agent", "domainName", "enabled", "intentThreshold" ]
+ },
+ "synonyms": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "Model 3": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "synonyms": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "value", "synonyms" ]
+ },
+ "examples": {
+ "type": "array",
+ "minItems": 1,
+ "items": { "$ref": "#/definitions/Model 3" }
+ },
+ "Model 4": {
+ "type": "object",
+ "properties": {
+ "entityName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "uiColor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "regex": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "type": {
+ "type": "string",
+ "default": "learned",
+ "enum": [ "learned", "regex" ],
+ "x-convert": { "trim": true }
+ },
+ "examples": {
+ "$ref": "#/definitions/examples",
+ "type": "array"
+ }
+ },
+ "required": [ "entityName", "agent", "examples" ]
+ },
+ "Model 5": {
+ "type": "object",
+ "properties": {
+ "entityId": { "type": "number" },
+ "start": { "type": "number" },
+ "end": { "type": "number" },
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entity": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extractor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "entityId", "start", "end", "value", "entity" ]
+ },
+ "entities": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 5" }
+ },
+ "Model 6": {
+ "type": "object",
+ "properties": {
+ "userSays": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entities": {
+ "$ref": "#/definitions/entities",
+ "type": "array"
+ }
+ },
+ "required": [ "userSays", "entities" ]
+ },
+ "Model 7": {
+ "type": "array",
+ "minItems": 2,
+ "items": { "$ref": "#/definitions/Model 6" }
+ },
+ "Model 8": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domain": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "intentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "examples": {
+ "$ref": "#/definitions/Model 7",
+ "type": "array"
+ }
+ },
+ "required": [ "agent", "domain", "intentName", "useWebhook", "usePostFormat", "examples" ]
+ },
+ "postFormat": {
+ "type": "object",
+ "properties": {
+ "postFormatPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "postFormatPayload" ]
+ },
+ "webhook": {
+ "type": "object",
+ "properties": {
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "webhookUrl", "webhookVerb", "webhookPayloadType" ]
+ },
+ "settings": { "type": "object" },
+ "Model 9": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "synonyms": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "value" ]
+ },
+ "Model 10": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 9" }
+ },
+ "Model 11": {
+ "type": "object",
+ "properties": {
+ "entityName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "uiColor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "type": {
+ "type": "string",
+ "default": "learned",
+ "enum": [ "learned", "regex" ],
+ "x-convert": { "trim": true }
+ },
+ "regex": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "examples": {
+ "$ref": "#/definitions/Model 10",
+ "type": "array"
+ }
+ },
+ "required": [ "entityName", "examples" ]
+ },
+ "Model 12": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 11" }
+ },
+ "Model 13": {
+ "type": "object",
+ "properties": {
+ "start": { "type": "number" },
+ "end": { "type": "number" },
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entity": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extractor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "start", "end", "value", "entity" ]
+ },
+ "Model 14": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 13" }
+ },
+ "Model 15": {
+ "type": "object",
+ "properties": {
+ "userSays": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entities": {
+ "$ref": "#/definitions/Model 14",
+ "type": "array"
+ }
+ },
+ "required": [ "userSays", "entities" ]
+ },
+ "Model 16": {
+ "type": "array",
+ "minItems": 2,
+ "items": { "$ref": "#/definitions/Model 15" }
+ },
+ "Model 17": {
+ "type": "object",
+ "properties": {
+ "slotName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entity": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "isList": { "type": "boolean" },
+ "isRequired": { "type": "boolean" },
+ "textPrompts": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "slotName", "entity", "isList", "isRequired" ]
+ },
+ "slots": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 17" }
+ },
+ "scenario": {
+ "type": "object",
+ "properties": {
+ "scenarioName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "slots": {
+ "$ref": "#/definitions/slots",
+ "type": "array"
+ },
+ "intentResponses": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "scenarioName", "intentResponses" ]
+ },
+ "Model 18": {
+ "type": "object",
+ "properties": {
+ "intentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "examples": {
+ "$ref": "#/definitions/Model 16",
+ "type": "array"
+ },
+ "scenario": { "$ref": "#/definitions/scenario" },
+ "useWebhook": { "type": "boolean" },
+ "webhook": { "$ref": "#/definitions/webhook" },
+ "usePostFormat": { "type": "boolean" },
+ "postFormat": { "$ref": "#/definitions/postFormat" }
+ },
+ "required": [ "intentName", "examples", "useWebhook", "usePostFormat" ]
+ },
+ "intents": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 18" }
+ },
+ "Model 19": {
+ "type": "object",
+ "properties": {
+ "domainName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "enabled": { "type": "boolean" },
+ "intentThreshold": { "type": "number" },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "model": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "status": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extraTrainingData": { "type": "boolean" },
+ "intents": {
+ "$ref": "#/definitions/intents",
+ "type": "array"
+ }
+ },
+ "required": [ "domainName", "enabled", "intentThreshold" ]
+ },
+ "domains": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 19" }
+ },
+ "Model 20": {
+ "type": "object",
+ "properties": {
+ "agentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "description": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "language": {
+ "type": "string",
+ "enum": [ "en", "es", "de", "fr", "pt" ],
+ "x-convert": { "trim": true }
+ },
+ "timezone": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domainClassifierThreshold": { "type": "number" },
+ "fallbackResponses": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "postFormat": { "$ref": "#/definitions/postFormat" },
+ "status": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "extraTrainingData": { "type": "boolean" },
+ "enableModelsPerDomain": { "type": "boolean" },
+ "model": { "type": "string" },
+ "webhook": { "$ref": "#/definitions/webhook" },
+ "settings": { "$ref": "#/definitions/settings" },
+ "entities": {
+ "$ref": "#/definitions/Model 12",
+ "type": "array"
+ },
+ "domains": {
+ "$ref": "#/definitions/domains",
+ "type": "array"
+ }
+ },
+ "required": [ "agentName", "language", "timezone", "domainClassifierThreshold", "fallbackResponses", "useWebhook", "usePostFormat" ]
+ },
+ "Model 21": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "scenario": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "slots": { "$ref": "#/definitions/settings" }
+ },
+ "required": [ "name", "scenario" ]
+ },
+ "Model 22": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "postFormatPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "id": { "type": "string" }
+ },
+ "required": [ "agent", "postFormatPayload" ]
+ },
+ "Model 23": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "agent", "webhookUrl", "webhookVerb", "webhookPayloadType" ]
+ },
+ "Model 24": {
+ "type": "object",
+ "properties": {
+ "sessionId": {
+ "type": "string",
+ "description": "Id of the session"
+ },
+ "text": {
+ "type": "string",
+ "description": "Text to parse"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone for duckling parse. Default UTC"
+ }
+ },
+ "required": [ "sessionId", "text" ]
+ },
+ "Model 25": {
+ "type": "object",
+ "properties": {
+ "text": {
+ "type": "string",
+ "description": "Text to parse"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone for duckling parse. Default UTC"
+ }
+ },
+ "required": [ "text" ]
+ },
+ "Model 26": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domain": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "intent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "scenarioName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "slots": {
+ "$ref": "#/definitions/slots",
+ "type": "array"
+ },
+ "intentResponses": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ },
+ "required": [ "agent", "domain", "intent", "scenarioName" ]
+ },
+ "Model 27": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domain": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "intent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML", "URL Encoded" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookUsername": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookPassword": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "agent", "domain", "intent", "webhookUrl", "webhookVerb", "webhookPayloadType" ]
+ },
+ "Model 28": {
+ "type": "object",
+ "properties": {
+ "agent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "domain": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "intent": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "postFormatPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "agent", "domain", "intent", "postFormatPayload" ]
+ },
+ "Model 29": {
+ "type": "object",
+ "properties": {
+ "agentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "description": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "language": {
+ "type": "string",
+ "enum": [ "en", "es", "de", "fr", "pt" ],
+ "x-convert": { "trim": true }
+ },
+ "timezone": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "domainClassifierThreshold": { "type": "number" },
+ "fallbackResponses": {
+ "$ref": "#/definitions/fallbackResponses",
+ "type": "array"
+ },
+ "status": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "extraTrainingData": { "type": "boolean" },
+ "enableModelsPerDomain": { "type": "boolean" },
+ "model": { "type": "string" }
+ }
+ },
+ "Model 30": {
+ "type": "object",
+ "properties": {
+ "domainName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "enabled": { "type": "boolean" },
+ "intentThreshold": { "type": "number" },
+ "lastTraining": {
+ "type": "string",
+ "format": "date"
+ },
+ "status": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "model": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extraTrainingData": { "type": "boolean" }
+ }
+ },
+ "Model 31": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 3" }
+ },
+ "Model 32": {
+ "type": "object",
+ "properties": {
+ "entityName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "uiColor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "regex": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "type": {
+ "type": "string",
+ "default": "learned",
+ "enum": [ "learned", "regex" ],
+ "x-convert": { "trim": true }
+ },
+ "examples": {
+ "$ref": "#/definitions/Model 31",
+ "type": "array"
+ }
+ }
+ },
+ "Model 33": {
+ "type": "object",
+ "properties": {
+ "entityId": { "type": "number" },
+ "start": { "type": "number" },
+ "end": { "type": "number" },
+ "value": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entity": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "extractor": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ },
+ "required": [ "start", "end", "value", "entity" ]
+ },
+ "Model 34": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Model 33" }
+ },
+ "Model 35": {
+ "type": "object",
+ "properties": {
+ "userSays": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "entities": {
+ "$ref": "#/definitions/Model 34",
+ "type": "array"
+ }
+ },
+ "required": [ "userSays", "entities" ]
+ },
+ "Model 36": {
+ "type": "array",
+ "minItems": 2,
+ "items": { "$ref": "#/definitions/Model 35" }
+ },
+ "Model 37": {
+ "type": "object",
+ "properties": {
+ "intentName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "useWebhook": { "type": "boolean" },
+ "usePostFormat": { "type": "boolean" },
+ "examples": {
+ "$ref": "#/definitions/Model 36",
+ "type": "array"
+ }
+ }
+ },
+ "Model 38": {
+ "type": "object",
+ "properties": {
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ }
+ },
+ "Model 39": {
+ "type": "object",
+ "properties": { "slots": { "$ref": "#/definitions/settings" } }
+ },
+ "Model 40": {
+ "type": "object",
+ "properties": {
+ "scenarioName": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "slots": {
+ "$ref": "#/definitions/slots",
+ "type": "array"
+ },
+ "intentResponses": {
+ "$ref": "#/definitions/synonyms",
+ "type": "array"
+ }
+ }
+ },
+ "Model 41": {
+ "type": "object",
+ "properties": {
+ "webhookUrl": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookVerb": {
+ "type": "string",
+ "enum": [ "GET", "PUT", "POST", "DELETE", "PATCH" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayloadType": {
+ "type": "string",
+ "enum": [ "None", "JSON", "XML", "URL Encoded" ],
+ "x-convert": { "trim": true }
+ },
+ "webhookPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookUsername": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ },
+ "webhookPassword": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ }
+ },
+ "Model 42": {
+ "type": "object",
+ "properties": {
+ "postFormatPayload": {
+ "type": "string",
+ "x-convert": { "trim": true }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/BotSharp.sln b/BotSharp.sln
index 02fa0535..8248a89a 100644
--- a/BotSharp.sln
+++ b/BotSharp.sln
@@ -33,6 +33,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Core.UnitTest", "B
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ ARTICULATE|Any CPU = ARTICULATE|Any CPU
+ ARTICULATE|x64 = ARTICULATE|x64
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
DIALOGFLOW|Any CPU = DIALOGFLOW|Any CPU
@@ -43,6 +45,10 @@ Global
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {95780673-2A1A-4953-962F-C46CBFDD07FF}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {95780673-2A1A-4953-962F-C46CBFDD07FF}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {95780673-2A1A-4953-962F-C46CBFDD07FF}.ARTICULATE|x64.ActiveCfg = ARTICULATE|x64
+ {95780673-2A1A-4953-962F-C46CBFDD07FF}.ARTICULATE|x64.Build.0 = ARTICULATE|x64
{95780673-2A1A-4953-962F-C46CBFDD07FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95780673-2A1A-4953-962F-C46CBFDD07FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95780673-2A1A-4953-962F-C46CBFDD07FF}.Debug|x64.ActiveCfg = Debug|x64
@@ -59,6 +65,10 @@ Global
{95780673-2A1A-4953-962F-C46CBFDD07FF}.Release|Any CPU.Build.0 = Release|Any CPU
{95780673-2A1A-4953-962F-C46CBFDD07FF}.Release|x64.ActiveCfg = Release|x64
{95780673-2A1A-4953-962F-C46CBFDD07FF}.Release|x64.Build.0 = Release|x64
+ {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.ARTICULATE|x64.ActiveCfg = ARTICULATE|x64
+ {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.ARTICULATE|x64.Build.0 = ARTICULATE|x64
{80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Debug|x64.ActiveCfg = Debug|x64
@@ -75,6 +85,10 @@ Global
{80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Release|Any CPU.Build.0 = Release|Any CPU
{80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Release|x64.ActiveCfg = Release|x64
{80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Release|x64.Build.0 = Release|x64
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.ARTICULATE|x64.ActiveCfg = ARTICULATE|x64
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.ARTICULATE|x64.Build.0 = ARTICULATE|x64
{03DCA427-327A-4FC9-9A2F-57D17F16708C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{03DCA427-327A-4FC9-9A2F-57D17F16708C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{03DCA427-327A-4FC9-9A2F-57D17F16708C}.Debug|x64.ActiveCfg = Debug|x64
@@ -91,6 +105,10 @@ Global
{03DCA427-327A-4FC9-9A2F-57D17F16708C}.Release|Any CPU.Build.0 = Release|Any CPU
{03DCA427-327A-4FC9-9A2F-57D17F16708C}.Release|x64.ActiveCfg = Release|x64
{03DCA427-327A-4FC9-9A2F-57D17F16708C}.Release|x64.Build.0 = Release|x64
+ {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.ARTICULATE|x64.ActiveCfg = ARTICULATE|x64
+ {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.ARTICULATE|x64.Build.0 = ARTICULATE|x64
{BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.Debug|x64.ActiveCfg = Debug|x64
@@ -107,6 +125,10 @@ Global
{BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.Release|Any CPU.Build.0 = Release|Any CPU
{BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.Release|x64.ActiveCfg = Release|x64
{BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.Release|x64.Build.0 = Release|x64
+ {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.ARTICULATE|x64.ActiveCfg = ARTICULATE|x64
+ {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.ARTICULATE|x64.Build.0 = ARTICULATE|x64
{C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.Debug|x64.ActiveCfg = Debug|x64
@@ -123,6 +145,10 @@ Global
{C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.Release|Any CPU.Build.0 = Release|Any CPU
{C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.Release|x64.ActiveCfg = Release|x64
{C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.Release|x64.Build.0 = Release|x64
+ {184F8B93-68C2-4849-9625-4023C4360990}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {184F8B93-68C2-4849-9625-4023C4360990}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {184F8B93-68C2-4849-9625-4023C4360990}.ARTICULATE|x64.ActiveCfg = ARTICULATE|Any CPU
+ {184F8B93-68C2-4849-9625-4023C4360990}.ARTICULATE|x64.Build.0 = ARTICULATE|Any CPU
{184F8B93-68C2-4849-9625-4023C4360990}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{184F8B93-68C2-4849-9625-4023C4360990}.Debug|Any CPU.Build.0 = Debug|Any CPU
{184F8B93-68C2-4849-9625-4023C4360990}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -139,6 +165,10 @@ Global
{184F8B93-68C2-4849-9625-4023C4360990}.Release|Any CPU.Build.0 = Release|Any CPU
{184F8B93-68C2-4849-9625-4023C4360990}.Release|x64.ActiveCfg = Release|Any CPU
{184F8B93-68C2-4849-9625-4023C4360990}.Release|x64.Build.0 = Release|Any CPU
+ {75B02A7C-EDB3-4082-9C1F-471773E760C3}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {75B02A7C-EDB3-4082-9C1F-471773E760C3}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {75B02A7C-EDB3-4082-9C1F-471773E760C3}.ARTICULATE|x64.ActiveCfg = ARTICULATE|Any CPU
+ {75B02A7C-EDB3-4082-9C1F-471773E760C3}.ARTICULATE|x64.Build.0 = ARTICULATE|Any CPU
{75B02A7C-EDB3-4082-9C1F-471773E760C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{75B02A7C-EDB3-4082-9C1F-471773E760C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75B02A7C-EDB3-4082-9C1F-471773E760C3}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -155,6 +185,10 @@ Global
{75B02A7C-EDB3-4082-9C1F-471773E760C3}.Release|Any CPU.Build.0 = Release|Any CPU
{75B02A7C-EDB3-4082-9C1F-471773E760C3}.Release|x64.ActiveCfg = Release|Any CPU
{75B02A7C-EDB3-4082-9C1F-471773E760C3}.Release|x64.Build.0 = Release|Any CPU
+ {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.ARTICULATE|x64.ActiveCfg = ARTICULATE|Any CPU
+ {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.ARTICULATE|x64.Build.0 = ARTICULATE|Any CPU
{3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -171,6 +205,10 @@ Global
{3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.Release|Any CPU.Build.0 = Release|Any CPU
{3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.Release|x64.ActiveCfg = Release|Any CPU
{3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.Release|x64.Build.0 = Release|Any CPU
+ {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.ARTICULATE|x64.ActiveCfg = ARTICULATE|x64
+ {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.ARTICULATE|x64.Build.0 = ARTICULATE|x64
{3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.Debug|x64.ActiveCfg = Debug|x64
@@ -187,6 +225,10 @@ Global
{3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.Release|Any CPU.Build.0 = Release|Any CPU
{3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.Release|x64.ActiveCfg = Release|x64
{3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.Release|x64.Build.0 = Release|x64
+ {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.ARTICULATE|x64.ActiveCfg = ARTICULATE|x64
+ {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.ARTICULATE|x64.Build.0 = ARTICULATE|x64
{8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.Debug|x64.ActiveCfg = Debug|x64
@@ -203,6 +245,10 @@ Global
{8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.Release|Any CPU.Build.0 = Release|Any CPU
{8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.Release|x64.ActiveCfg = Release|x64
{8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.Release|x64.Build.0 = Release|x64
+ {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.ARTICULATE|x64.ActiveCfg = ARTICULATE|x64
+ {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.ARTICULATE|x64.Build.0 = ARTICULATE|x64
{30F80E7D-951A-4E8F-9C3C-2C866528EABD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{30F80E7D-951A-4E8F-9C3C-2C866528EABD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{30F80E7D-951A-4E8F-9C3C-2C866528EABD}.Debug|x64.ActiveCfg = Debug|x64
diff --git a/README.rst b/README.rst
index 67862680..dcb35a7a 100644
--- a/README.rst
+++ b/README.rst
@@ -1,6 +1,6 @@
.. raw:: html
-
+
The Open Source AI Bot Platform Builder
======================================================
@@ -77,7 +77,7 @@ Scan to join group in Wechat
.. raw:: html
-
+
.. _Docker: https://www.docker.com
.. _Rasa UI: https://github.com/paschmann/rasa-ui
diff --git a/README_zh.rst b/README_zh.rst
new file mode 100644
index 00000000..fca2a8ed
--- /dev/null
+++ b/README_zh.rst
@@ -0,0 +1,88 @@
+.. raw:: html
+
+
+
+开源人工智能聊天机器人平台构建框架
+===============================
+
+.. image:: https://img.shields.io/badge/gitter-join%20chat-brightgreen.svg
+ :target: `gitter`_
+ :alt: gitter
+ :align: left
+
+.. image:: https://img.shields.io/hexpm/l/plug.svg
+ :target: `license`_
+ :alt: Hex.pm
+ :align: left
+
+.. image:: https://img.shields.io/nuget/dt/EntityFrameworkCore.BootKit.svg
+ :target: `botsharpnuget`_
+ :alt: NuGet
+
+本项目用于学习和交流人工智能聊天机器人平台构建的相关技术,本人对于任何用于生产环境而产生的风险和损失不负责任
+**************************************************************************************************
+
+*"Conversation as a platform (CaaP) is the future, so it's perfect that we're already offering the whole toolkits to our .NET developers using the BotSharp AI BOT Platform Builder to build a CaaP. It opens up as much learning power as possible for your own robots and precisely control every step of the AI processing pipeline."*
+
+**BotSharp** is an open source machine learning framework for AI Bot platform builder. This project involves natural language understanding, computer vision and audio processing technologies, and aims to promote the development and application of intelligent robot assistants in information systems. Out-of-the-box machine learning algorithms allow ordinary programmers to develop artificial intelligence applications faster and easier.
+
+.. raw:: html
+
+
+
+It's witten in C# running on .Net Core that is full cross-platform framework. C# is a enterprise grade programming language which is widely used to code business logic in information management related system. More friendly to corporate developers. BotSharp adopts machine learning algrithm in C# directly. That will facilitate the feature of the typed language C#, and be more easier when refactoring code in system scope.
+
+Why we do this? because we all know python is not friendly programming language for enterprise developers, it's not only because it's low performance but also it's a type weak language, it will be a disater if you use python to build your bussiness system.
+
+BotSharp is in accordance with components princple strictly, decouples every part that needed in the platform builder. So you can choose different UI/UX, or pick up a different NLP Tagger, or select a more advanced algrithm to do NER task. They are all modulized based an unfied interfaces.
+
+Some Features
+-------------
+
+* Integrated debugging is easier without relying on any other machine learning algorithm libraries.
+* Built-in multi-Agents management, easy to build Bot as a Service platform.
+* Context In/ Out with lifespan to make conversion flow be controllable.
+* Use the natural language processing pipeline mechanism to work with extensions easily, and build your own unique robot processing flows.
+* Rewrote NLP algorithm from ground without historical issues.
+* Support export/ import agent from other bot platforms directly.
+* Support different UI providers like `Rasa UI`_ and `Articulate UI`_.
+* Support for multiple data request and response formats such as Rasa NLU and Dialogflow.
+* Integrate with popular social platforms like Facebook Messenger, Slack and Telegram.
+* Multi-core parallel computing optimization, High-Performance C# on GPUs in Hybridizer.
+
+Quick Started
+-------------
+You can use docker compose to run BotSharp quickly, make sure you've got `Docker`_ installed.
+::
+
+ PS D:\> git clone https://github.com/Oceania2018/BotSharp
+ PS D:\> cd BotSharp
+ PS D:\BotSharp\> docker-compose -f dockerfiles/docker-compose-articulateui.yml up
+
+Point your web browser at http://localhost:3000 and enjoy BotSharp with Articulate-UI.
+
+
+Documents
+---------
+Read the docs: https://botsharp.readthedocs.io
+
+Feel free to message me on
+
+.. image:: https://img.shields.io/badge/gitter-join%20chat-brightgreen.svg
+ :target: `gitter`_
+
+If you feel that this project is helpful to you, please Star on the project, we will be very grateful.
+
+Scan to join group in Wechat
+
+.. raw:: html
+
+
+
+.. _Docker: https://www.docker.com
+.. _Rasa UI: https://github.com/paschmann/rasa-ui
+.. _Articulate UI: https://spg.ai/projects/articulate
+.. _gitter: https://gitter.im/botsharpcore/Lobby
+.. _license: https://raw.githubusercontent.com/Oceania2018/BotSharp/master/LICENSE
+.. _botsharpnuget: https://www.nuget.org/packages/BotSharp.Core
+