|
@@ -23,228 +23,7 @@ namespace Yuuna
|
|
{
|
|
{
|
|
public static async Task Main(string[] args)
|
|
public static async Task Main(string[] args)
|
|
{
|
|
{
|
|
- await WebHost.RunAsync();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //while (true)
|
|
|
|
- //{
|
|
|
|
- // var client = new RestClient("http://api.yuuna-project.com:5000/");
|
|
|
|
- // client.Timeout = -1;
|
|
|
|
- // var request = new RestRequest(Method.POST);
|
|
|
|
- // request.AddHeader("Content-Type", "application/json");
|
|
|
|
- // request.AddParameter("application/json", "{\n \"text\": \""+Console.ReadLine()+"\"\n}", ParameterType.RequestBody);
|
|
|
|
- // var response = client.Execute(request);
|
|
|
|
- // Console.WriteLine("Bot: " + response.Content);
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //var canResponses = new Response[]
|
|
|
|
- //{
|
|
|
|
- // (Moods.Sad, "我不清楚你想做什麼 OvQ"),
|
|
|
|
- // (Moods.Sad, "我不懂你想幹嘛 QAQ"),
|
|
|
|
- // (Moods.Sad, "我不知道你想幹嘛 OHQ"),
|
|
|
|
- //};
|
|
|
|
-
|
|
|
|
- //var antonyms = new[]
|
|
|
|
- //{
|
|
|
|
- // new Antonym("是", "不是"),
|
|
|
|
- // new Antonym("對", "不對"),
|
|
|
|
- // new Antonym("是", "否"),
|
|
|
|
- //};
|
|
|
|
-
|
|
|
|
- //IInteractiveView interactor = new ConsoleBotInteract( );
|
|
|
|
- //ITextSegmenter segmenter = new JiebaTextSegmenter();
|
|
|
|
- //IStrategy plan = new DefaultStrategy();
|
|
|
|
-
|
|
|
|
- //var allPlugins = ModuleManager.Instance.Modules;
|
|
|
|
- //foreach (var item in allPlugins)
|
|
|
|
- //{
|
|
|
|
- // item.Initialize(segmenter, new GroupManager());
|
|
|
|
- // Debug.WriteLine("已載入模組: " + item.Type.AssemblyQualifiedName);
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- //// prepare task completed.
|
|
|
|
- //LOOP:
|
|
|
|
- //var text = interactor.Accept();
|
|
|
|
- //var cutted = segmenter.Cut(text);
|
|
|
|
- //Debug.WriteLine($"來自分詞器 {segmenter.Name} 的分詞結果: [ {string.Join(", ", cutted)} ]");
|
|
|
|
-
|
|
|
|
- //var alternative = plan.FindBest(allPlugins.Select(x => x.PatternSet).ToArray(), cutted);
|
|
|
|
- //Debug.WriteLine(alternative.Status);
|
|
|
|
- //switch (alternative.Status)
|
|
|
|
- //{
|
|
|
|
- // // 罐頭回應
|
|
|
|
- // case AlternativeStatus.Invalid:
|
|
|
|
- // interactor.OnReceive(canResponses.RandomTakeOne());
|
|
|
|
- // break;
|
|
|
|
-
|
|
|
|
- // case AlternativeStatus.Optimal:
|
|
|
|
- // {
|
|
|
|
- // var single = alternative.Matches[0];
|
|
|
|
- // single.Pattern.Owner.Patterns.TryGet(single.Pattern, out var bag);
|
|
|
|
- // var r = bag.Invoke(single);
|
|
|
|
- // interactor.OnReceive(r);
|
|
|
|
- // break;
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // case AlternativeStatus.Condition:
|
|
|
|
- // {
|
|
|
|
- // var sb = new StringBuilder();
|
|
|
|
-
|
|
|
|
- // sb.Append("你是想要");
|
|
|
|
-
|
|
|
|
- // foreach (var g in alternative.Matches[0].Pattern.ToImmutable())
|
|
|
|
- // {
|
|
|
|
- // sb.Append(g.RandomTakeOne().RandomTakeOne());
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // sb.Append("嗎?");
|
|
|
|
- // interactor.OnReceive(sb.ToString());
|
|
|
|
-
|
|
|
|
- // text = interactor.Accept();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // foreach (var antonym in antonyms)
|
|
|
|
- // {
|
|
|
|
- // if (antonym.Judge(text, out var type))
|
|
|
|
- // {
|
|
|
|
- // if (type.Equals(Antonym.TypeKinds.Positive))
|
|
|
|
- // {
|
|
|
|
- // var single = alternative.Matches[0];
|
|
|
|
- // single.Pattern.Owner.Patterns.TryGet(single.Pattern, out var bag);
|
|
|
|
- // var r = bag.Invoke(single);
|
|
|
|
- // interactor.OnReceive(r);
|
|
|
|
- // goto Leave;
|
|
|
|
- // }
|
|
|
|
- // else
|
|
|
|
- // break;
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // interactor.OnReceive(canResponses.RandomTakeOne());
|
|
|
|
- // Leave:
|
|
|
|
- // break;
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // case AlternativeStatus.Proposition:
|
|
|
|
- // {
|
|
|
|
-
|
|
|
|
- // var sb = new StringBuilder();
|
|
|
|
- // var current = alternative.Matches[0];
|
|
|
|
-
|
|
|
|
- // sb.Append("你是想要");
|
|
|
|
-
|
|
|
|
- // foreach (var g in current.Pattern.ToImmutable())
|
|
|
|
- // {
|
|
|
|
- // sb.Append(g.RandomTakeOne().RandomTakeOne());
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // sb.Append("嗎?");
|
|
|
|
- // interactor.OnReceive(sb.ToString());
|
|
|
|
-
|
|
|
|
- // text = interactor.Accept();
|
|
|
|
- // foreach (var antonym in antonyms)
|
|
|
|
- // {
|
|
|
|
- // if (antonym.Judge(text, out var type))
|
|
|
|
- // {
|
|
|
|
- // if (type.Equals(Antonym.TypeKinds.Positive))
|
|
|
|
- // {
|
|
|
|
- // current.Pattern.Owner.Patterns.TryGet(current.Pattern, out var bag);
|
|
|
|
- // var r = bag.Invoke(current);
|
|
|
|
- // interactor.OnReceive(r);
|
|
|
|
- // goto Leave;
|
|
|
|
- // }
|
|
|
|
- // else if(type.Equals(Antonym.TypeKinds.Negative))
|
|
|
|
- // break;
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // sb.Clear();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // current = alternative.Matches[1];
|
|
|
|
- // sb.Append("還是");
|
|
|
|
- // sb.Append("你是想");
|
|
|
|
-
|
|
|
|
- // foreach (var g in current.Pattern.ToImmutable())
|
|
|
|
- // {
|
|
|
|
- // sb.Append(g.RandomTakeOne().RandomTakeOne());
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // sb.Append("?");
|
|
|
|
- // interactor.OnReceive(sb.ToString());
|
|
|
|
-
|
|
|
|
- // text = interactor.Accept();
|
|
|
|
-
|
|
|
|
- // foreach (var antonym in antonyms)
|
|
|
|
- // {
|
|
|
|
- // if (antonym.Judge(text, out var type))
|
|
|
|
- // {
|
|
|
|
- // if (type.Equals(Antonym.TypeKinds.Positive))
|
|
|
|
- // {
|
|
|
|
- // current.Pattern.Owner.Patterns.TryGet(current.Pattern, out var bag);
|
|
|
|
- // var r = bag.Invoke(current);
|
|
|
|
- // interactor.OnReceive(r);
|
|
|
|
- // goto Leave;
|
|
|
|
- // }
|
|
|
|
- // else if (type.Equals(Antonym.TypeKinds.Negative))
|
|
|
|
- // break;
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // interactor.OnReceive(canResponses.RandomTakeOne());
|
|
|
|
-
|
|
|
|
- // Leave:
|
|
|
|
- // break;
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // case AlternativeStatus.Paradox:
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // break;
|
|
|
|
-
|
|
|
|
- // //case AlternativeStatus.NoModuleInstalled:
|
|
|
|
- // // interactor.OnReceive((Moods.Sad, "無效的模組"));
|
|
|
|
- // // break;
|
|
|
|
-
|
|
|
|
- // default:
|
|
|
|
- // throw new InvalidOperationException();
|
|
|
|
- //}
|
|
|
|
- //goto LOOP;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //try
|
|
|
|
- //{Send("開燈");
|
|
|
|
- // var stt = SpeechRecognizer.Create("secret.json");
|
|
|
|
- // stt.RecognizeCompleted += a =>
|
|
|
|
- // {
|
|
|
|
- // if (a.Count > 0)
|
|
|
|
- // {
|
|
|
|
- // Console.WriteLine("## Google 語音: " + a[0].Transcript);
|
|
|
|
- // Send(a[0].Transcript);
|
|
|
|
- // }
|
|
|
|
- // };
|
|
|
|
-
|
|
|
|
- // Console.WriteLine("## Proof of Concept Ver.");
|
|
|
|
- // Console.WriteLine("可以叫我開關燈或者開關門,其他的我還不會");
|
|
|
|
-
|
|
|
|
- // Console.WriteLine("按下 Enter 鍵開始錄音,任意鍵離開");
|
|
|
|
- // Loop:
|
|
|
|
- // if(Console.ReadKey().Key == ConsoleKey.Enter)
|
|
|
|
- // {
|
|
|
|
- // using (stt.Recognize())
|
|
|
|
- // {
|
|
|
|
- // Console.WriteLine("按下 Enter 停止錄音,任意鍵離開");
|
|
|
|
- // if(Console.ReadKey().Key == ConsoleKey.Enter)
|
|
|
|
- // goto Loop;
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- //}
|
|
|
|
- //catch (Exception e)
|
|
|
|
- //{
|
|
|
|
- // Console.WriteLine(e.Message);
|
|
|
|
- // Console.ReadKey();
|
|
|
|
- //}
|
|
|
|
|
|
+ await WebHost.RunAsync();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|