From 1dad8be2be941b4e29bf1f27c800b2dd480c1816 Mon Sep 17 00:00:00 2001 From: Oceania2018 Date: Sun, 23 Sep 2018 10:16:29 -0500 Subject: [PATCH] 1: Add NAudio library to handle audio stream. 2: Change Settings location. 3: Organize docker files. --- BotSharp.Core.UnitTest/AgentTest.cs | 3 +- BotSharp.RestApi/BotSharp.RestApi.csproj | 1 + .../Voice/WakeupWordController.cs | 18 +++ BotSharp.Voice.UnitTest/AudioCaptureTest.cs | 14 ++ .../BotSharp.Voice.UnitTest.csproj | 21 +++ BotSharp.Voice/AudioCapture.cs | 49 +++++++ BotSharp.Voice/BotSharp.Voice.csproj | 9 ++ BotSharp.WebHost/Program.cs | 3 +- .../Settings}/app.json | 0 .../Settings}/auth.json | 0 .../Settings}/bot.json | 0 .../Settings}/db.json | 0 .../Settings}/logging.json | 0 .../Settings}/swagger.json | 0 BotSharp.sln | 132 ++++++++++++++++++ README.rst | 2 +- .../DIALOGFLOW.Dockerfile | 2 +- dockerfiles/RASA.Dockerfile | 16 +++ .../docker-compose-articulateui.yml | 74 +++++----- .../docker-compose-rasaui.yml | 34 ++--- docs/installation.rst | 17 ++- 21 files changed, 329 insertions(+), 66 deletions(-) create mode 100644 BotSharp.RestApi/Voice/WakeupWordController.cs create mode 100644 BotSharp.Voice.UnitTest/AudioCaptureTest.cs create mode 100644 BotSharp.Voice.UnitTest/BotSharp.Voice.UnitTest.csproj create mode 100644 BotSharp.Voice/AudioCapture.cs rename {Settings => BotSharp.WebHost/Settings}/app.json (100%) rename {Settings => BotSharp.WebHost/Settings}/auth.json (100%) rename {Settings => BotSharp.WebHost/Settings}/bot.json (100%) rename {Settings => BotSharp.WebHost/Settings}/db.json (100%) rename {Settings => BotSharp.WebHost/Settings}/logging.json (100%) rename {Settings => BotSharp.WebHost/Settings}/swagger.json (100%) rename Dockerfile => dockerfiles/DIALOGFLOW.Dockerfile (93%) create mode 100644 dockerfiles/RASA.Dockerfile rename docker-compose-articulateui.yml => dockerfiles/docker-compose-articulateui.yml (95%) rename docker-compose-rasaui.yml => dockerfiles/docker-compose-rasaui.yml (95%) diff --git a/BotSharp.Core.UnitTest/AgentTest.cs b/BotSharp.Core.UnitTest/AgentTest.cs index 2f3e2263..f6c66469 100644 --- a/BotSharp.Core.UnitTest/AgentTest.cs +++ b/BotSharp.Core.UnitTest/AgentTest.cs @@ -51,7 +51,8 @@ namespace BotSharp.Core.UnitTest agents.ForEach(agentHeader => { var bot = new BotSharpAi(); - bot.RestoreAgent(dataPath); + bot.LoadAgentFromFile(dataPath); + bot.SaveAgentToDb(); }); } diff --git a/BotSharp.RestApi/BotSharp.RestApi.csproj b/BotSharp.RestApi/BotSharp.RestApi.csproj index 9c9589cc..9d9a3edf 100644 --- a/BotSharp.RestApi/BotSharp.RestApi.csproj +++ b/BotSharp.RestApi/BotSharp.RestApi.csproj @@ -81,6 +81,7 @@ + diff --git a/BotSharp.RestApi/Voice/WakeupWordController.cs b/BotSharp.RestApi/Voice/WakeupWordController.cs new file mode 100644 index 00000000..c40ac4d3 --- /dev/null +++ b/BotSharp.RestApi/Voice/WakeupWordController.cs @@ -0,0 +1,18 @@ +using BotSharp.Voice; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BotSharp.RestApi.Voice +{ + [Route("[controller]/[action]")] + public class WakeupWordController : ControllerBase + { + [HttpGet] + public void Record() + { + new AudioCapture().Start(); + } + } +} diff --git a/BotSharp.Voice.UnitTest/AudioCaptureTest.cs b/BotSharp.Voice.UnitTest/AudioCaptureTest.cs new file mode 100644 index 00000000..3e56191e --- /dev/null +++ b/BotSharp.Voice.UnitTest/AudioCaptureTest.cs @@ -0,0 +1,14 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BotSharp.Voice.UnitTest +{ + [TestClass] + public class AudioCaptureTest + { + [TestMethod] + public void TestMethod1() + { + + } + } +} diff --git a/BotSharp.Voice.UnitTest/BotSharp.Voice.UnitTest.csproj b/BotSharp.Voice.UnitTest/BotSharp.Voice.UnitTest.csproj new file mode 100644 index 00000000..343a5f98 --- /dev/null +++ b/BotSharp.Voice.UnitTest/BotSharp.Voice.UnitTest.csproj @@ -0,0 +1,21 @@ + + + + netcoreapp2.1 + + false + + Debug;Release;DIALOGFLOW;RASA + + + + + + + + + + + + + diff --git a/BotSharp.Voice/AudioCapture.cs b/BotSharp.Voice/AudioCapture.cs new file mode 100644 index 00000000..574d7b12 --- /dev/null +++ b/BotSharp.Voice/AudioCapture.cs @@ -0,0 +1,49 @@ +using NAudio.Wave; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace BotSharp.Voice +{ + public class AudioCapture + { + public async void Start() + { + List bytes = new List(); + + object writeLock = new object(); + bool writeMore = true; + var waveIn = new WaveInEvent(); + waveIn.DeviceNumber = 0; + waveIn.WaveFormat = new WaveFormat(16000, 1); + waveIn.DataAvailable += + (object sender, WaveInEventArgs args) => + { + bytes.AddRange(args.Buffer); + + lock (writeLock) + { + if (!writeMore) return; + + } + }; + waveIn.StartRecording(); + Console.WriteLine("Speak now."); + await Task.Delay(TimeSpan.FromSeconds(3)); + // Stop recording and shut down. + waveIn.StopRecording(); + + Console.WriteLine("Capture stopped."); + + byte[] buffer = bytes.ToArray(); + + for (int i = 0; i < buffer.Length; i++) + { + + Console.WriteLine($"Buffer {i} "); + + } + } + } +} diff --git a/BotSharp.Voice/BotSharp.Voice.csproj b/BotSharp.Voice/BotSharp.Voice.csproj index 3982f9c9..7d5beec3 100644 --- a/BotSharp.Voice/BotSharp.Voice.csproj +++ b/BotSharp.Voice/BotSharp.Voice.csproj @@ -9,4 +9,13 @@ bin\RASA + + DEBUG;TRACE + false + + + + + + diff --git a/BotSharp.WebHost/Program.cs b/BotSharp.WebHost/Program.cs index 8bfc511a..8e7c72ff 100644 --- a/BotSharp.WebHost/Program.cs +++ b/BotSharp.WebHost/Program.cs @@ -27,11 +27,10 @@ namespace BotSharp.WebHost } settingsFolder = Path.Combine(dir, "Settings"); - Console.WriteLine($"Settings folder: {settingsFolder}"); + Console.WriteLine($"Read settings from {settingsFolder}"); var settings = Directory.GetFiles(settingsFolder, "*.json"); settings.ToList().ForEach(setting => { - Console.WriteLine($"Read {setting}"); config.AddJsonFile(setting, optional: false, reloadOnChange: true); }); }) diff --git a/Settings/app.json b/BotSharp.WebHost/Settings/app.json similarity index 100% rename from Settings/app.json rename to BotSharp.WebHost/Settings/app.json diff --git a/Settings/auth.json b/BotSharp.WebHost/Settings/auth.json similarity index 100% rename from Settings/auth.json rename to BotSharp.WebHost/Settings/auth.json diff --git a/Settings/bot.json b/BotSharp.WebHost/Settings/bot.json similarity index 100% rename from Settings/bot.json rename to BotSharp.WebHost/Settings/bot.json diff --git a/Settings/db.json b/BotSharp.WebHost/Settings/db.json similarity index 100% rename from Settings/db.json rename to BotSharp.WebHost/Settings/db.json diff --git a/Settings/logging.json b/BotSharp.WebHost/Settings/logging.json similarity index 100% rename from Settings/logging.json rename to BotSharp.WebHost/Settings/logging.json diff --git a/Settings/swagger.json b/BotSharp.WebHost/Settings/swagger.json similarity index 100% rename from Settings/swagger.json rename to BotSharp.WebHost/Settings/swagger.json diff --git a/BotSharp.sln b/BotSharp.sln index ae3fe396..02fa0535 100644 --- a/BotSharp.sln +++ b/BotSharp.sln @@ -23,70 +23,202 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Voice", "BotSharp. EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Vision", "BotSharp.Vision\BotSharp.Vision.csproj", "{75B02A7C-EDB3-4082-9C1F-471773E760C3}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Voice.UnitTest", "BotSharp.Voice.UnitTest\BotSharp.Voice.UnitTest.csproj", "{3F0CAAD4-564B-43FF-90BF-26AC47C9D677}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Algorithm.UnitTest", "BotSharp.Algorithm.UnitTest\BotSharp.Algorithm.UnitTest.csproj", "{3C702980-826B-4F7D-8D5A-C9F1C811AAE2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.NLP.UnitTest", "BotSharp.NLP.UnitTest\BotSharp.NLP.UnitTest.csproj", "{8A1F6277-FFCB-4CCD-B798-876D8BE525A9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Core.UnitTest", "BotSharp.Core.UnitTest\BotSharp.Core.UnitTest.csproj", "{30F80E7D-951A-4E8F-9C3C-2C866528EABD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 DIALOGFLOW|Any CPU = DIALOGFLOW|Any CPU + DIALOGFLOW|x64 = DIALOGFLOW|x64 RASA|Any CPU = RASA|Any CPU + RASA|x64 = RASA|x64 Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {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 + {95780673-2A1A-4953-962F-C46CBFDD07FF}.Debug|x64.Build.0 = Debug|x64 {95780673-2A1A-4953-962F-C46CBFDD07FF}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU {95780673-2A1A-4953-962F-C46CBFDD07FF}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {95780673-2A1A-4953-962F-C46CBFDD07FF}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|x64 + {95780673-2A1A-4953-962F-C46CBFDD07FF}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|x64 {95780673-2A1A-4953-962F-C46CBFDD07FF}.RASA|Any CPU.ActiveCfg = RASA|Any CPU {95780673-2A1A-4953-962F-C46CBFDD07FF}.RASA|Any CPU.Build.0 = RASA|Any CPU + {95780673-2A1A-4953-962F-C46CBFDD07FF}.RASA|x64.ActiveCfg = RASA|x64 + {95780673-2A1A-4953-962F-C46CBFDD07FF}.RASA|x64.Build.0 = RASA|x64 {95780673-2A1A-4953-962F-C46CBFDD07FF}.Release|Any CPU.ActiveCfg = Release|Any CPU {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}.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 + {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Debug|x64.Build.0 = Debug|x64 {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|x64 + {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|x64 {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.RASA|Any CPU.ActiveCfg = RASA|Any CPU {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.RASA|Any CPU.Build.0 = RASA|Any CPU + {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.RASA|x64.ActiveCfg = RASA|x64 + {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.RASA|x64.Build.0 = RASA|x64 {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Release|Any CPU.ActiveCfg = Release|Any CPU {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}.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 + {03DCA427-327A-4FC9-9A2F-57D17F16708C}.Debug|x64.Build.0 = Debug|x64 {03DCA427-327A-4FC9-9A2F-57D17F16708C}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU {03DCA427-327A-4FC9-9A2F-57D17F16708C}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {03DCA427-327A-4FC9-9A2F-57D17F16708C}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|x64 + {03DCA427-327A-4FC9-9A2F-57D17F16708C}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|x64 {03DCA427-327A-4FC9-9A2F-57D17F16708C}.RASA|Any CPU.ActiveCfg = RASA|Any CPU {03DCA427-327A-4FC9-9A2F-57D17F16708C}.RASA|Any CPU.Build.0 = RASA|Any CPU + {03DCA427-327A-4FC9-9A2F-57D17F16708C}.RASA|x64.ActiveCfg = RASA|x64 + {03DCA427-327A-4FC9-9A2F-57D17F16708C}.RASA|x64.Build.0 = RASA|x64 {03DCA427-327A-4FC9-9A2F-57D17F16708C}.Release|Any CPU.ActiveCfg = Release|Any CPU {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}.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 + {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.Debug|x64.Build.0 = Debug|x64 {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|x64 + {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|x64 {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.RASA|Any CPU.ActiveCfg = RASA|Any CPU {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.RASA|Any CPU.Build.0 = RASA|Any CPU + {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.RASA|x64.ActiveCfg = RASA|x64 + {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.RASA|x64.Build.0 = RASA|x64 {BE1A033F-AC14-4654-95C3-4B33AF8F6BBF}.Release|Any CPU.ActiveCfg = Release|Any CPU {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}.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 + {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.Debug|x64.Build.0 = Debug|x64 {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|x64 + {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|x64 {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.RASA|Any CPU.ActiveCfg = RASA|Any CPU {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.RASA|Any CPU.Build.0 = RASA|Any CPU + {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.RASA|x64.ActiveCfg = RASA|x64 + {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.RASA|x64.Build.0 = RASA|x64 {C2FDC855-BD88-4041-B0FF-3AA8A1C11A22}.Release|Any CPU.ActiveCfg = Release|Any CPU {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}.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 + {184F8B93-68C2-4849-9625-4023C4360990}.Debug|x64.Build.0 = Debug|Any CPU {184F8B93-68C2-4849-9625-4023C4360990}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU {184F8B93-68C2-4849-9625-4023C4360990}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {184F8B93-68C2-4849-9625-4023C4360990}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|Any CPU + {184F8B93-68C2-4849-9625-4023C4360990}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|Any CPU {184F8B93-68C2-4849-9625-4023C4360990}.RASA|Any CPU.ActiveCfg = RASA|Any CPU {184F8B93-68C2-4849-9625-4023C4360990}.RASA|Any CPU.Build.0 = RASA|Any CPU + {184F8B93-68C2-4849-9625-4023C4360990}.RASA|x64.ActiveCfg = RASA|Any CPU + {184F8B93-68C2-4849-9625-4023C4360990}.RASA|x64.Build.0 = RASA|Any CPU {184F8B93-68C2-4849-9625-4023C4360990}.Release|Any CPU.ActiveCfg = Release|Any CPU {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}.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 + {75B02A7C-EDB3-4082-9C1F-471773E760C3}.Debug|x64.Build.0 = Debug|Any CPU {75B02A7C-EDB3-4082-9C1F-471773E760C3}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU {75B02A7C-EDB3-4082-9C1F-471773E760C3}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {75B02A7C-EDB3-4082-9C1F-471773E760C3}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|Any CPU + {75B02A7C-EDB3-4082-9C1F-471773E760C3}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|Any CPU {75B02A7C-EDB3-4082-9C1F-471773E760C3}.RASA|Any CPU.ActiveCfg = RASA|Any CPU {75B02A7C-EDB3-4082-9C1F-471773E760C3}.RASA|Any CPU.Build.0 = RASA|Any CPU + {75B02A7C-EDB3-4082-9C1F-471773E760C3}.RASA|x64.ActiveCfg = RASA|Any CPU + {75B02A7C-EDB3-4082-9C1F-471773E760C3}.RASA|x64.Build.0 = RASA|Any CPU {75B02A7C-EDB3-4082-9C1F-471773E760C3}.Release|Any CPU.ActiveCfg = Release|Any CPU {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}.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 + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.Debug|x64.Build.0 = Debug|Any CPU + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.DIALOGFLOW|x64.ActiveCfg = Debug|Any CPU + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.DIALOGFLOW|x64.Build.0 = Debug|Any CPU + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.RASA|Any CPU.ActiveCfg = RASA|Any CPU + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.RASA|Any CPU.Build.0 = RASA|Any CPU + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.RASA|x64.ActiveCfg = Release|Any CPU + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.RASA|x64.Build.0 = Release|Any CPU + {3F0CAAD4-564B-43FF-90BF-26AC47C9D677}.Release|Any CPU.ActiveCfg = Release|Any CPU + {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}.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 + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.Debug|x64.Build.0 = Debug|x64 + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|x64 + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|x64 + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.RASA|Any CPU.ActiveCfg = RASA|Any CPU + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.RASA|Any CPU.Build.0 = RASA|Any CPU + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.RASA|x64.ActiveCfg = RASA|x64 + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.RASA|x64.Build.0 = RASA|x64 + {3C702980-826B-4F7D-8D5A-C9F1C811AAE2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {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}.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 + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.Debug|x64.Build.0 = Debug|x64 + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|x64 + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|x64 + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.RASA|Any CPU.ActiveCfg = RASA|Any CPU + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.RASA|Any CPU.Build.0 = RASA|Any CPU + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.RASA|x64.ActiveCfg = RASA|x64 + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.RASA|x64.Build.0 = RASA|x64 + {8A1F6277-FFCB-4CCD-B798-876D8BE525A9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {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}.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 + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.Debug|x64.Build.0 = Debug|x64 + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|x64 + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|x64 + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.RASA|Any CPU.ActiveCfg = RASA|Any CPU + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.RASA|Any CPU.Build.0 = RASA|Any CPU + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.RASA|x64.ActiveCfg = RASA|x64 + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.RASA|x64.Build.0 = RASA|x64 + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.Release|Any CPU.Build.0 = Release|Any CPU + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.Release|x64.ActiveCfg = Release|x64 + {30F80E7D-951A-4E8F-9C3C-2C866528EABD}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/README.rst b/README.rst index 1a09600b..37cc9d1e 100644 --- a/README.rst +++ b/README.rst @@ -57,7 +57,7 @@ You can use docker compose to run BotSharp quickly, make sure you've got `Docker PS D:\> git clone https://github.com/Oceania2018/BotSharp PS D:\> cd BotSharp - PS D:\BotSharp\> docker-compose -f docker-compose-articulateui.yml up + 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. diff --git a/Dockerfile b/dockerfiles/DIALOGFLOW.Dockerfile similarity index 93% rename from Dockerfile rename to dockerfiles/DIALOGFLOW.Dockerfile index 0fe1e9d3..4618bff3 100644 --- a/Dockerfile +++ b/dockerfiles/DIALOGFLOW.Dockerfile @@ -4,12 +4,12 @@ WORKDIR /source # copies the rest of your code COPY . . + # RUN dotnet build RUN dotnet publish BotSharp.WebHost/BotSharp.WebHost.csproj --configuration DIALOGFLOW --output /app # copy Settings folder WORKDIR /app -COPY Settings Settings RUN mkdir App_Data/Projects # stage 2: run diff --git a/dockerfiles/RASA.Dockerfile b/dockerfiles/RASA.Dockerfile new file mode 100644 index 00000000..3c1e7b07 --- /dev/null +++ b/dockerfiles/RASA.Dockerfile @@ -0,0 +1,16 @@ +# stage 1: build +FROM microsoft/dotnet AS botsharp +WORKDIR /source + +# copies the rest of your code +COPY . . + +# RUN dotnet build +RUN dotnet publish BotSharp.WebHost/BotSharp.WebHost.csproj --configuration RASA --output /app + +# copy Settings folder +WORKDIR /app +RUN mkdir App_Data/Projects + +# stage 2: run +ENTRYPOINT [ "dotnet", "BotSharp.WebHost.dll" ] diff --git a/docker-compose-articulateui.yml b/dockerfiles/docker-compose-articulateui.yml similarity index 95% rename from docker-compose-articulateui.yml rename to dockerfiles/docker-compose-articulateui.yml index 550b28b4..f4be7bd4 100644 --- a/docker-compose-articulateui.yml +++ b/dockerfiles/docker-compose-articulateui.yml @@ -1,37 +1,37 @@ -version: '3.0' - -services: - api: - image: samtecspg/articulate-api:0.12.1 - ports: ['0.0.0.0:7500:7500'] - networks: ['botsharp-network'] - entrypoint: ['node', 'start.js'] - environment: - - SWAGGER_BASE_PATH - - ui: - image: samtecspg/articulate-ui:0.12.1 - ports: ['0.0.0.0:3000:3000'] - networks: ['botsharp-network'] - environment: - - rasanluendpoint=http://rasa:5000 - - API_URL - - rasa: - image: botsharpdocker/botsharp:latest - ports: ['0.0.0.0:5000:5000'] - networks: ['botsharp-network'] - - duckling: - image: samtecspg/duckling:0.1.6.0 - ports: ['0.0.0.0:8000:8000'] - networks: ['botsharp-network'] - - redis: - image: redis:4.0.6-alpine - ports: ['0.0.0.0:6379:6379'] - networks: ['botsharp-network'] - command: redis-server --appendonly yes - - -networks: {botsharp-network: {}} +version: '3.0' + +services: + api: + image: samtecspg/articulate-api:0.12.1 + ports: ['0.0.0.0:7500:7500'] + networks: ['botsharp-network'] + entrypoint: ['node', 'start.js'] + environment: + - SWAGGER_BASE_PATH + + ui: + image: samtecspg/articulate-ui:0.12.1 + ports: ['0.0.0.0:3000:3000'] + networks: ['botsharp-network'] + environment: + - rasanluendpoint=http://rasa:5000 + - API_URL + + rasa: + image: botsharpdocker/botsharp:latest + ports: ['0.0.0.0:5000:5000'] + networks: ['botsharp-network'] + + duckling: + image: samtecspg/duckling:0.1.6.0 + ports: ['0.0.0.0:8000:8000'] + networks: ['botsharp-network'] + + redis: + image: redis:4.0.6-alpine + ports: ['0.0.0.0:6379:6379'] + networks: ['botsharp-network'] + command: redis-server --appendonly yes + + +networks: {botsharp-network: {}} diff --git a/docker-compose-rasaui.yml b/dockerfiles/docker-compose-rasaui.yml similarity index 95% rename from docker-compose-rasaui.yml rename to dockerfiles/docker-compose-rasaui.yml index 549aa796..e9fc01fc 100644 --- a/docker-compose-rasaui.yml +++ b/dockerfiles/docker-compose-rasaui.yml @@ -1,17 +1,17 @@ -version: '3.0' - -services: - ui: - image: botsharpdocker/botsharp-rasaui:latest - ports: ['0.0.0.0:5001:5001'] - networks: ['botsharp-network'] - environment: - - rasanluendpoint=http://botsharp:5000 - - botsharp: - image: botsharpdocker/botsharp:latest - ports: ['0.0.0.0:5000:5000'] - networks: ['botsharp-network'] - - -networks: {botsharp-network: {}} +version: '3.0' + +services: + ui: + image: botsharpdocker/botsharp-rasaui:latest + ports: ['0.0.0.0:5001:5001'] + networks: ['botsharp-network'] + environment: + - rasanluendpoint=http://botsharp:5000 + + botsharp: + image: botsharpdocker/botsharp:latest + ports: ['0.0.0.0:5000:5000'] + networks: ['botsharp-network'] + + +networks: {botsharp-network: {}} diff --git a/docs/installation.rst b/docs/installation.rst index 499bc605..af80733a 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -12,8 +12,11 @@ You can use docker compose to run, make sure you've got `Docker`_ installed. PS D:\> git clone https://github.com/Oceania2018/BotSharp PS D:\> cd BotSharp - -1. Integrate with `Articulate UI`_ + +1. Integrate with `Botpress`_ + + +2. Integrate with `Articulate UI`_ :: @@ -22,17 +25,17 @@ You can use docker compose to run, make sure you've got `Docker`_ installed. Point your web browser at http://localhost:3000 and enjoy Articulate-UI with BotSharp. |ArticulateHomeScreenshot| -2. Integrate with `Rasa UI`_, you can use docker compose to run. +3. Integrate with `Rasa UI`_, you can use docker compose to run. :: - PS D:\BotSharp\> docker-compose -f docker-compose-rasaui.yml up + PS D:\BotSharp\> docker-compose -f dockerfiles/docker-compose-rasaui.yml up Point your web browser at http://localhost:5001 and enjoy Rasa-UI with BotSharp. |RasaUIHomeScreenshot| -3. Integrate with `Rasa Talk`_ +4. Integrate with `Rasa Talk`_ Building BotSharp @@ -61,7 +64,7 @@ Build docker image: :: - PS D:\BotSharp\> docker build -t botsharp . + PS D:\BotSharp\> docker build -f dockerfiles/DIALOGFLOW.Dockerfile -t botsharp . Start a container: @@ -95,7 +98,7 @@ Use BotSharp.NLP as a natural language processing toolkit alone. PM> Install-Package BotSharp.NLP - +.. _Botpress: https://github.com/botpress/botpress .. _Rasa UI: https://github.com/paschmann/rasa-ui .. _Articulate UI: https://spg.ai/projects/articulate .. _Rasa Talk: https://github.com/jackdh/RasaTalk