From c18537a8f0b34648289ebacaa9974183a808f044 Mon Sep 17 00:00:00 2001
From: zhangyanbo2007 <1093014078@qq.com>
Date: Wed, 17 Oct 2018 02:40:53 +0800
Subject: [PATCH 01/11] Update README.rst
---
README.rst | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/README.rst b/README.rst
index 4318d5ed..3a32a142 100644
--- a/README.rst
+++ b/README.rst
@@ -49,6 +49,10 @@ Some Features
Quick Started
-------------
+1 Make sure that you have downloaded the related components.
+2 See the file "BotSharp\BotSharp.WebHost\Settings\app.json",change the path to your own project's path
+3 Select dialogflow or articulate to make it work.
+
You can use docker compose to run BotSharp quickly, make sure you've got `Docker`_ installed.
::
@@ -56,7 +60,7 @@ You can use docker compose to run BotSharp quickly, make sure you've got `Docker
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.
+Point your web browser at http://localhost:**** and enjoy BotSharp with Articulate-UI.
Extension Libraries
-----------------
From 21187f4664f0c7461c3f8b0a23da9eb8e4189fe4 Mon Sep 17 00:00:00 2001
From: zhangyanbo2007 <1093014078@qq.com>
Date: Wed, 17 Oct 2018 02:41:34 +0800
Subject: [PATCH 02/11] Update README.rst
---
README.rst | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.rst b/README.rst
index 3a32a142..45b2af19 100644
--- a/README.rst
+++ b/README.rst
@@ -49,9 +49,9 @@ Some Features
Quick Started
-------------
-1 Make sure that you have downloaded the related components.
-2 See the file "BotSharp\BotSharp.WebHost\Settings\app.json",change the path to your own project's path
-3 Select dialogflow or articulate to make it work.
+1 Make sure that you have downloaded the related components.`_
+2 See the file "BotSharp\BotSharp.WebHost\Settings\app.json",change the path to your own project's path`_
+3 Select dialogflow or articulate to make it work.`_
You can use docker compose to run BotSharp quickly, make sure you've got `Docker`_ installed.
::
From 4133ca6d5de0bc201d1aca68c36da26d8af8e133 Mon Sep 17 00:00:00 2001
From: zhangyanbo2007 <1093014078@qq.com>
Date: Wed, 17 Oct 2018 02:42:28 +0800
Subject: [PATCH 03/11] Update README.rst
---
README.rst | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.rst b/README.rst
index 45b2af19..b76cbf24 100644
--- a/README.rst
+++ b/README.rst
@@ -49,9 +49,9 @@ Some Features
Quick Started
-------------
-1 Make sure that you have downloaded the related components.`_
-2 See the file "BotSharp\BotSharp.WebHost\Settings\app.json",change the path to your own project's path`_
-3 Select dialogflow or articulate to make it work.`_
+* Make sure that you have downloaded the related components.
+* See the file "BotSharp\BotSharp.WebHost\Settings\app.json",change the path to your own project's path
+* Select dialogflow or articulate to make it work.
You can use docker compose to run BotSharp quickly, make sure you've got `Docker`_ installed.
::
From 9b79a5e9ebaaca1347ff5c2bf95e4b08edfd54be Mon Sep 17 00:00:00 2001
From: zhangyanbo2007 <1093014078@qq.com>
Date: Wed, 17 Oct 2018 02:43:00 +0800
Subject: [PATCH 04/11] Update README.rst
---
README.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.rst b/README.rst
index b76cbf24..543231f6 100644
--- a/README.rst
+++ b/README.rst
@@ -50,7 +50,7 @@ Some Features
Quick Started
-------------
* Make sure that you have downloaded the related components.
-* See the file "BotSharp\BotSharp.WebHost\Settings\app.json",change the path to your own project's path
+* See the file "BotSharp\BotSharp.WebHost\Settings\app.json",change the path to your own project's path.
* Select dialogflow or articulate to make it work.
You can use docker compose to run BotSharp quickly, make sure you've got `Docker`_ installed.
From b511e53e4fe3c66b2d6c17a89cf84caa12e58f13 Mon Sep 17 00:00:00 2001
From: zhangyanbo2007 <1093014078@qq.com>
Date: Wed, 17 Oct 2018 03:47:11 +0800
Subject: [PATCH 05/11] change project configuration
AgentStorageInRedis->AgentStorageInMemory
---
BotSharp.NLP/BotSharp.NLP.csproj | 5 +-
.../Featuring/CountFeatureExtractor.cs | 4 +-
BotSharp.NLP/Featuring/IFeatureExtractor.cs | 4 +-
.../Featuring/TfIdfFeatureExtractor.cs | 4 +-
.../Featuring/Word2VecFeatureExtractor.cs | 4 +-
BotSharp.WebHost/BotSharp.WebHost.csproj | 1 -
BotSharp.WebHost/Settings/DialogflowAi.json | 8 +-
BotSharp.WebHost/Settings/app.json | 60 +++----
BotSharp.sln | 154 ++++++++++++++++--
9 files changed, 184 insertions(+), 60 deletions(-)
diff --git a/BotSharp.NLP/BotSharp.NLP.csproj b/BotSharp.NLP/BotSharp.NLP.csproj
index 26678b03..b2c4c12f 100644
--- a/BotSharp.NLP/BotSharp.NLP.csproj
+++ b/BotSharp.NLP/BotSharp.NLP.csproj
@@ -43,8 +43,11 @@ Naive Bayes Classifier
-
+
+
+
+
diff --git a/BotSharp.NLP/Featuring/CountFeatureExtractor.cs b/BotSharp.NLP/Featuring/CountFeatureExtractor.cs
index 62bb44c0..a22b4518 100644
--- a/BotSharp.NLP/Featuring/CountFeatureExtractor.cs
+++ b/BotSharp.NLP/Featuring/CountFeatureExtractor.cs
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-using Bigtree.Algorithm.Matrix;
+//using Bigtree.Algorithm.Matrix;
using BotSharp.NLP.Tokenize;
using System;
using System.Collections.Generic;
@@ -35,7 +35,7 @@ namespace BotSharp.NLP.Featuring
public List> Dictionary { get; set; }
public List Features { get; set; }
- public Shape Shape { get; set; }
+ //public Shape Shape { get; set; }
public string ModelFile { get; set; }
public void Vectorize(List features)
diff --git a/BotSharp.NLP/Featuring/IFeatureExtractor.cs b/BotSharp.NLP/Featuring/IFeatureExtractor.cs
index 04d25dc0..fa5eda4f 100644
--- a/BotSharp.NLP/Featuring/IFeatureExtractor.cs
+++ b/BotSharp.NLP/Featuring/IFeatureExtractor.cs
@@ -1,4 +1,4 @@
-using Bigtree.Algorithm.Matrix;
+//using Bigtree.Algorithm.Matrix;
using System;
using System.Collections.Generic;
using System.Text;
@@ -35,7 +35,7 @@ namespace BotSharp.NLP.Featuring
///
/// Array shape
///
- Shape Shape { get; set; }
+ //Shape Shape { get; set; }
///
/// Pre-trained model file path
diff --git a/BotSharp.NLP/Featuring/TfIdfFeatureExtractor.cs b/BotSharp.NLP/Featuring/TfIdfFeatureExtractor.cs
index b48b36c9..5de1ce1a 100644
--- a/BotSharp.NLP/Featuring/TfIdfFeatureExtractor.cs
+++ b/BotSharp.NLP/Featuring/TfIdfFeatureExtractor.cs
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-using Bigtree.Algorithm.Matrix;
+//using Bigtree.Algorithm.Matrix;
using BotSharp.NLP.Tokenize;
using System;
using System.Collections.Generic;
@@ -39,7 +39,7 @@ namespace BotSharp.NLP.Featuring
public List> Dictionary { get; set; }
public List Features { get; set; }
- public Shape Shape { get; set; }
+ //public Shape Shape { get; set; }
public string ModelFile { get; set; }
public void Extract(Sentence sentence)
diff --git a/BotSharp.NLP/Featuring/Word2VecFeatureExtractor.cs b/BotSharp.NLP/Featuring/Word2VecFeatureExtractor.cs
index fb359a5c..08f5fe3d 100644
--- a/BotSharp.NLP/Featuring/Word2VecFeatureExtractor.cs
+++ b/BotSharp.NLP/Featuring/Word2VecFeatureExtractor.cs
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text;
-using Bigtree.Algorithm.Matrix;
+//using Bigtree.Algorithm.Matrix;
using Txt2Vec;
namespace BotSharp.NLP.Featuring
@@ -12,7 +12,7 @@ namespace BotSharp.NLP.Featuring
public List Sentences { get; set; }
public List> Dictionary { get; set; }
public List Features { get; set; }
- public Shape Shape { get; set; }
+ //public Shape Shape { get; set; }
public VectorGenerator Vg { get; set; }
public int SentenceVectorSize { get; set; }
public string ModelFile { get; set; }
diff --git a/BotSharp.WebHost/BotSharp.WebHost.csproj b/BotSharp.WebHost/BotSharp.WebHost.csproj
index a498794c..aa577598 100644
--- a/BotSharp.WebHost/BotSharp.WebHost.csproj
+++ b/BotSharp.WebHost/BotSharp.WebHost.csproj
@@ -80,7 +80,6 @@
-
diff --git a/BotSharp.WebHost/Settings/DialogflowAi.json b/BotSharp.WebHost/Settings/DialogflowAi.json
index aa8cba6d..dba3a169 100644
--- a/BotSharp.WebHost/Settings/DialogflowAi.json
+++ b/BotSharp.WebHost/Settings/DialogflowAi.json
@@ -1,7 +1,7 @@
{
// if you want to override platform setting, please set corresponding value, otherwise you don't need this section.
- "dialogflowAi": {
- "botEngine": "BotSharpNLU",
- "agentStorage": "AgentStorageInRedis"
- }
+ "dialogflowAi": {
+ "botEngine": "BotSharpNLU",
+ "agentStorage": "AgentStorageInMemory"
+ }
}
diff --git a/BotSharp.WebHost/Settings/app.json b/BotSharp.WebHost/Settings/app.json
index 562b65d4..29d958c8 100644
--- a/BotSharp.WebHost/Settings/app.json
+++ b/BotSharp.WebHost/Settings/app.json
@@ -1,34 +1,36 @@
{
- "version": "0.1.0",
- "assemblies": "BotSharp.Core",
+ "version": "0.1.0",
+ "assemblies": "BotSharp.Core",
- "platformModuleName": "DialogflowAi",
+ "platformModuleName": "ArticulateAi",
- "machineLearning": {
- "dataDir": "D:\\Projects\\BotSharp\\Data"
- },
-
- "moduleBasePath": "C:\\Users\\haipi\\Documents\\Projects",
- "modules": [
- {
- "Name": "DialogflowAi",
- "Type": "BotSharp.Platform.Dialogflow",
- "Path": "botsharp-dialogflow\\BotSharp.Platform.Dialogflow\\bin\\Debug\\netstandard2.0"
+ "machineLearning": {
+ "dataDir": "D:\\Projects\\BotSharp\\Data"
},
- {
- "Name": "WeixinChannel",
- "Type": "BotSharp.Channel.Weixin",
- "Path": "botsharp-channel-weixin\\BotSharp.Channel.Weixin\\bin\\Debug\\netstandard2.0"
- } /*,
- {
- "Name": "RasaAi",
- "Type": "BotSharp.Platform.Rasa",
- "Path": "botsharp-rasa\\BotSharp.Platform.Rasa\\bin\\Debug\\netstandard2.0"
- },
- {
- "Name": "ArticulateAi",
- "Type": "BotSharp.Platform.Articulate",
- "Path": "botsharp-articulate\\BotSharp.Platform.Articulate\\bin\\Debug\\netstandard2.0"
- }*/
- ]
+
+ "moduleBasePath": "C:\\Users\\haipi\\Documents\\Projects",
+ "modules": [
+ /*
+ {
+ "Name": "DialogflowAi",
+ "Type": "BotSharp.Platform.Dialogflow",
+ "Path": "botsharp-dialogflow\\BotSharp.Platform.Dialogflow\\bin\\Debug\\netcoreapp2.1"
+ }
+ {
+ "Name": "WeixinChannel",
+ "Type": "BotSharp.Channel.Weixin",
+ "Path": "botsharp-channel-weixin\\BotSharp.Channel.Weixin\\bin\\Debug\\netcoreapp2.1"
+ },
+ {
+ "Name": "RasaAi",
+ "Type": "BotSharp.Platform.Rasa",
+ "Path": "botsharp-rasa\\BotSharp.Platform.Rasa\\bin\\Debug\\netcoreapp2.1"
+ },
+ */
+ {
+ "Name": "ArticulateAi",
+ "Type": "BotSharp.Platform.Articulate",
+ "Path": "botsharp-articulate\\BotSharp.Platform.Articulate\\bin\\Debug\\netcoreapp2.1"
+ }
+ ]
}
diff --git a/BotSharp.sln b/BotSharp.sln
index 81ba14f1..6d6c745a 100644
--- a/BotSharp.sln
+++ b/BotSharp.sln
@@ -24,18 +24,30 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Platform.Models",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Platform.Dialogflow", "..\botsharp-dialogflow\BotSharp.Platform.Dialogflow\BotSharp.Platform.Dialogflow.csproj", "{4F74387F-7101-428C-B918-38BC5ACCB0A6}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Channel.Weixin", "..\botsharp-channel-weixin\BotSharp.Channel.Weixin\BotSharp.Channel.Weixin.csproj", "{0F34140A-3714-4586-8A8C-3ABA56221D06}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bigtree.Algorithm", "..\Bigtree.MachineLearning\Bigtree.Algorithm\Bigtree.Algorithm.csproj", "{F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NumSharp", "..\NumSharp\src\NumSharp\NumSharp.csproj", "{92604F14-2C41-47CD-BED5-A7F2D08CA3D7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Platform.Articulate", "..\botsharp-articulate\BotSharp.Platform.Articulate\BotSharp.Platform.Articulate.csproj", "{55ACA669-7D5E-443D-9AB6-D38F4001B676}"
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
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}.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
@@ -44,10 +56,18 @@ Global
{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
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.ARTICULATE|Any CPU.ActiveCfg = Release|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.ARTICULATE|Any CPU.Build.0 = Release|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.ARTICULATE|x64.ActiveCfg = Release|x64
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.ARTICULATE|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
@@ -56,10 +76,18 @@ Global
{03DCA427-327A-4FC9-9A2F-57D17F16708C}.DIALOGFLOW|Any CPU.Build.0 = Debug|Any CPU
{03DCA427-327A-4FC9-9A2F-57D17F16708C}.DIALOGFLOW|x64.ActiveCfg = Debug|x64
{03DCA427-327A-4FC9-9A2F-57D17F16708C}.DIALOGFLOW|x64.Build.0 = Debug|x64
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.RASA|Any CPU.ActiveCfg = Release|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.RASA|Any CPU.Build.0 = Release|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.RASA|x64.ActiveCfg = Release|x64
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.RASA|x64.Build.0 = Release|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
+ {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
@@ -68,10 +96,18 @@ Global
{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
+ {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
@@ -80,10 +116,18 @@ Global
{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}.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
@@ -92,10 +136,18 @@ Global
{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
+ {62F08F9F-16C2-4754-90B0-B604DC18AE23}.ARTICULATE|Any CPU.ActiveCfg = Release|Any CPU
+ {62F08F9F-16C2-4754-90B0-B604DC18AE23}.ARTICULATE|Any CPU.Build.0 = Release|Any CPU
+ {62F08F9F-16C2-4754-90B0-B604DC18AE23}.ARTICULATE|x64.ActiveCfg = Release|Any CPU
+ {62F08F9F-16C2-4754-90B0-B604DC18AE23}.ARTICULATE|x64.Build.0 = Release|Any CPU
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.Debug|Any CPU.Build.0 = Debug|Any CPU
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -104,10 +156,18 @@ Global
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.DIALOGFLOW|Any CPU.Build.0 = Debug|Any CPU
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.DIALOGFLOW|x64.ActiveCfg = Debug|Any CPU
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.DIALOGFLOW|x64.Build.0 = Debug|Any CPU
+ {62F08F9F-16C2-4754-90B0-B604DC18AE23}.RASA|Any CPU.ActiveCfg = Release|Any CPU
+ {62F08F9F-16C2-4754-90B0-B604DC18AE23}.RASA|Any CPU.Build.0 = Release|Any CPU
+ {62F08F9F-16C2-4754-90B0-B604DC18AE23}.RASA|x64.ActiveCfg = Release|Any CPU
+ {62F08F9F-16C2-4754-90B0-B604DC18AE23}.RASA|x64.Build.0 = Release|Any CPU
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.Release|Any CPU.ActiveCfg = Release|Any CPU
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.Release|Any CPU.Build.0 = Release|Any CPU
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.Release|x64.ActiveCfg = Release|Any CPU
{62F08F9F-16C2-4754-90B0-B604DC18AE23}.Release|x64.Build.0 = Release|Any CPU
+ {C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.ARTICULATE|Any CPU.ActiveCfg = Release|Any CPU
+ {C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.ARTICULATE|Any CPU.Build.0 = Release|Any CPU
+ {C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.ARTICULATE|x64.ActiveCfg = Release|Any CPU
+ {C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.ARTICULATE|x64.Build.0 = Release|Any CPU
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -116,34 +176,94 @@ Global
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.DIALOGFLOW|Any CPU.Build.0 = Debug|Any CPU
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.DIALOGFLOW|x64.ActiveCfg = Debug|Any CPU
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.DIALOGFLOW|x64.Build.0 = Debug|Any CPU
+ {C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.RASA|Any CPU.ActiveCfg = Release|Any CPU
+ {C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.RASA|Any CPU.Build.0 = Release|Any CPU
+ {C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.RASA|x64.ActiveCfg = Release|Any CPU
+ {C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.RASA|x64.Build.0 = Release|Any CPU
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.Release|Any CPU.Build.0 = Release|Any CPU
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.Release|x64.ActiveCfg = Release|Any CPU
{C4F2EAE5-F2C7-4F52-9DB2-7E76D7080C72}.Release|x64.Build.0 = Release|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.ARTICULATE|Any CPU.ActiveCfg = Release|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.ARTICULATE|Any CPU.Build.0 = Release|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.ARTICULATE|x64.ActiveCfg = Release|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.ARTICULATE|x64.Build.0 = Release|Any CPU
{4F74387F-7101-428C-B918-38BC5ACCB0A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4F74387F-7101-428C-B918-38BC5ACCB0A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4F74387F-7101-428C-B918-38BC5ACCB0A6}.Debug|x64.ActiveCfg = Debug|Any CPU
{4F74387F-7101-428C-B918-38BC5ACCB0A6}.Debug|x64.Build.0 = Debug|Any CPU
- {4F74387F-7101-428C-B918-38BC5ACCB0A6}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU
- {4F74387F-7101-428C-B918-38BC5ACCB0A6}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU
- {4F74387F-7101-428C-B918-38BC5ACCB0A6}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|Any CPU
- {4F74387F-7101-428C-B918-38BC5ACCB0A6}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.DIALOGFLOW|Any CPU.ActiveCfg = Debug|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.DIALOGFLOW|Any CPU.Build.0 = Debug|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.DIALOGFLOW|x64.ActiveCfg = Debug|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.DIALOGFLOW|x64.Build.0 = Debug|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.RASA|Any CPU.ActiveCfg = Release|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.RASA|Any CPU.Build.0 = Release|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.RASA|x64.ActiveCfg = Release|Any CPU
+ {4F74387F-7101-428C-B918-38BC5ACCB0A6}.RASA|x64.Build.0 = Release|Any CPU
{4F74387F-7101-428C-B918-38BC5ACCB0A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F74387F-7101-428C-B918-38BC5ACCB0A6}.Release|Any CPU.Build.0 = Release|Any CPU
{4F74387F-7101-428C-B918-38BC5ACCB0A6}.Release|x64.ActiveCfg = Release|Any CPU
{4F74387F-7101-428C-B918-38BC5ACCB0A6}.Release|x64.Build.0 = Release|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.Debug|x64.ActiveCfg = Debug|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.Debug|x64.Build.0 = Debug|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.DIALOGFLOW|Any CPU.ActiveCfg = Debug|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.DIALOGFLOW|Any CPU.Build.0 = Debug|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.DIALOGFLOW|x64.ActiveCfg = Debug|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.DIALOGFLOW|x64.Build.0 = Debug|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.Release|Any CPU.Build.0 = Release|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.Release|x64.ActiveCfg = Release|Any CPU
- {0F34140A-3714-4586-8A8C-3ABA56221D06}.Release|x64.Build.0 = Release|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.ARTICULATE|Any CPU.ActiveCfg = ARTICULATE|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.ARTICULATE|Any CPU.Build.0 = ARTICULATE|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.ARTICULATE|x64.ActiveCfg = ARTICULATE|x64
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.ARTICULATE|x64.Build.0 = ARTICULATE|x64
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.Debug|x64.ActiveCfg = Debug|x64
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.Debug|x64.Build.0 = Debug|x64
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.DIALOGFLOW|Any CPU.ActiveCfg = DIALOGFLOW|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.DIALOGFLOW|Any CPU.Build.0 = DIALOGFLOW|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.DIALOGFLOW|x64.ActiveCfg = DIALOGFLOW|x64
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.DIALOGFLOW|x64.Build.0 = DIALOGFLOW|x64
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.RASA|Any CPU.ActiveCfg = RASA|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.RASA|Any CPU.Build.0 = RASA|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.RASA|x64.ActiveCfg = RASA|x64
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.RASA|x64.Build.0 = RASA|x64
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.Release|x64.ActiveCfg = Release|x64
+ {F09DB3FB-0ADF-4351-95BC-0B004BCB4C54}.Release|x64.Build.0 = Release|x64
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.ARTICULATE|Any CPU.ActiveCfg = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.ARTICULATE|Any CPU.Build.0 = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.ARTICULATE|x64.ActiveCfg = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.ARTICULATE|x64.Build.0 = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.Debug|x64.Build.0 = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.DIALOGFLOW|Any CPU.ActiveCfg = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.DIALOGFLOW|Any CPU.Build.0 = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.DIALOGFLOW|x64.ActiveCfg = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.DIALOGFLOW|x64.Build.0 = Debug|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.RASA|Any CPU.ActiveCfg = Release|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.RASA|Any CPU.Build.0 = Release|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.RASA|x64.ActiveCfg = Release|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.RASA|x64.Build.0 = Release|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.Release|x64.ActiveCfg = Release|Any CPU
+ {92604F14-2C41-47CD-BED5-A7F2D08CA3D7}.Release|x64.Build.0 = Release|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.ARTICULATE|Any CPU.ActiveCfg = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.ARTICULATE|Any CPU.Build.0 = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.ARTICULATE|x64.ActiveCfg = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.ARTICULATE|x64.Build.0 = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.Debug|x64.Build.0 = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.DIALOGFLOW|Any CPU.ActiveCfg = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.DIALOGFLOW|Any CPU.Build.0 = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.DIALOGFLOW|x64.ActiveCfg = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.DIALOGFLOW|x64.Build.0 = Debug|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.RASA|Any CPU.ActiveCfg = Release|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.RASA|Any CPU.Build.0 = Release|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.RASA|x64.ActiveCfg = Release|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.RASA|x64.Build.0 = Release|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.Release|Any CPU.Build.0 = Release|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.Release|x64.ActiveCfg = Release|Any CPU
+ {55ACA669-7D5E-443D-9AB6-D38F4001B676}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
From b0d8c3bb70e599c1fc0ff8c6bd884b865b7d1d35 Mon Sep 17 00:00:00 2001
From: Spongebob5 <44250159+Spongebob5@users.noreply.github.com>
Date: Thu, 18 Oct 2018 14:15:55 +0800
Subject: [PATCH 06/11] wechat
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
集成微信公众号文档
---
docs/集成微信公众号.md | 69 ++++++++++++++++++
docs/集成微信公众号图片/3112.png | Bin 0 -> 44250 bytes
docs/集成微信公众号图片/BotSharp运行结果.png | Bin 0 -> 42101 bytes
docs/集成微信公众号图片/ngrok黑窗体.png | Bin 0 -> 33092 bytes
docs/集成微信公众号图片/图片1.png | Bin 0 -> 13815 bytes
docs/集成微信公众号图片/图片2.png | Bin 0 -> 8909 bytes
docs/集成微信公众号图片/图片3.png | Bin 0 -> 9993 bytes
docs/集成微信公众号图片/微信接口配置信息1.png | Bin 0 -> 13272 bytes
docs/集成微信公众号图片/接口配置成功.png | Bin 0 -> 12305 bytes
docs/集成微信公众号图片/配置接口Token.png | Bin 0 -> 21746 bytes
docs/集成微信公众号图片/配置接口url.png | Bin 0 -> 25503 bytes
11 files changed, 69 insertions(+)
create mode 100644 docs/集成微信公众号.md
create mode 100644 docs/集成微信公众号图片/3112.png
create mode 100644 docs/集成微信公众号图片/BotSharp运行结果.png
create mode 100644 docs/集成微信公众号图片/ngrok黑窗体.png
create mode 100644 docs/集成微信公众号图片/图片1.png
create mode 100644 docs/集成微信公众号图片/图片2.png
create mode 100644 docs/集成微信公众号图片/图片3.png
create mode 100644 docs/集成微信公众号图片/微信接口配置信息1.png
create mode 100644 docs/集成微信公众号图片/接口配置成功.png
create mode 100644 docs/集成微信公众号图片/配置接口Token.png
create mode 100644 docs/集成微信公众号图片/配置接口url.png
diff --git a/docs/集成微信公众号.md b/docs/集成微信公众号.md
new file mode 100644
index 00000000..96efb719
--- /dev/null
+++ b/docs/集成微信公众号.md
@@ -0,0 +1,69 @@
+---
+title: 集成微信公众号
+tags: BotSharp,微信公众测试号
+grammar_cjkRuby: true
+---
+集成微信公众号主要是将BotSharp与微信公众号对接起来,搭建一个环境,为后续工作做好准备。
+
+
+----------
+
+# BotSharp的配置
+
+ 要与微信公众号对接,首先要成功运行BotSharp。下面详细讲解运行BotSharp的步骤:
+## 加载项目
+项目botsharp-channel-weixin为腾讯微信BotSharp的通道模块,加载此项目可以省去编写微信通道模块的过程,当然也可以根据自己的需求去编写微信的通道模块。
+
+项目文件botsharp-channel-weixin下载地址(https://github.com/Oceania2018/botsharp-channel-weixin)将botsharp-channel-weixin项目放置到BotSharp同级的目录下。加载botsharp-channel-weixin到BotSharp中。
+ 
+
+右键点击“==依赖项==”、“==添加引用==”,把botsharp-channel-weixin项目添加到BotSharp.WebHost的引用中。
+ 
+
+找到BotSharp.WebHost下的app.json,修改moduleBasePath和botsharp-channel-weixin的Path路径。程序会根据路径找到其项目的.dll。
+ 
+
+## 运行BotSharp
+加载项目完毕,运行BotSharp项目,出现如下的黑色的控制台程序,表示程序找到了botsharp-channel-weixin的.dll,项目运行成功。如果想用NLU,做自然语言理解,则可以加载botsharp-dialogflow项目到BotSharp中。
+
+
+运行成功后,打开网址为(http://localhost:3112/index.html)的网页,此网页所显示的为BotSharp的接口列表。
+
+
+# 对接微信公众号
+## 申请微信测试号
+在微信公众平台认证之前,我们可以先申请一个测试的公众号来进行测试,这对开发人员来说还是有很大好处的。(https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)
+
+## 测试号接口信息配置
+**1)申请服务器**
+
+我们所要填写的url必须是外网能够访问到的服务器地址,而且必须是80端口,通过服务器的地址你要能够让微信访问到你的项目。
+
+
+我们需要把内网映射出去变成能够访问的外网,我们采取一个简单的方法,通过ngrok进行内网穿透。ngrok工具的下载地址:(http://ngrok.ciqiuwl.cn/)下载完成后解压缩。
+
+找到apps.bat文件,点击右键打开记事本进行编辑,,执行 *ngrok -config=ngrok.cfg -subdomain xxx 80*//(xxx 是你自定义的域名前缀),如执行*ngrok -config=ngrok.cfg -subdomain sss 3112* ,双击弹出一个黑窗体,该黑窗体显示的域名就是映射出去的网址。
+
+也有其它的方法得到外网网址,如通过路由器映射,可自行通过百度上网查询。
+
+其中http://sss.ngrok.xiaomiqiu.cn即为映射的外网IP。
+
+**2)填写接口配置信息**
+
+url填写: http://外网IP/wx
+Token:自主设置,这个token与公众平台wiki中常提的access_token不是一回事。这个token只用于验证开发者服务器。
+
+
+Token是用于交互安全认证的,可任意填写,但要与服务端的校验微信的Controller一样。
+
+打开BotSharp-Channel-Weixin类库下的Controllers文件中WeixinAsyncConreoller.cs类。正确填写Token、AppId字符串。其中Token要与微信测试号中的Token相同。
+
+
+填写完毕,打开ngrok并运行BotSharp项目,则可以成功提交微信测试号的接口配置信息。
+
+
+填写JS接口安全域名,域名可随意填写。微信扫描关注测试公众号。
+至此,集成微信公众号完成。
+
+
+
diff --git a/docs/集成微信公众号图片/3112.png b/docs/集成微信公众号图片/3112.png
new file mode 100644
index 0000000000000000000000000000000000000000..c75647b4b464626bda2133f68003b25850589cf3
GIT binary patch
literal 44250
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