diff --git a/Bot.Builder.Community.sln b/Bot.Builder.Community.sln index b04f4343..5efb76de 100644 --- a/Bot.Builder.Community.sln +++ b/Bot.Builder.Community.sln @@ -1,398 +1,398 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29905.134 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{57D9879A-FC9F-468C-B86F-BE45A1472F88}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{840D4038-9AB8-4750-9FFE-365386CE47E2}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Middleware", "Middleware", "{B56E49F6-DF51-4114-90E7-F62ECF34B802}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Recognizers", "Recognizers", "{2975F285-9749-49EA-A6E6-E5D78DDE20B6}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dialogs", "Dialogs", "{08759E28-8592-4EBA-9A07-19A5BED3FB0C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.Tests", "tests\Bot.Builder.Community.Middleware.Tests\Bot.Builder.Community.Middleware.Tests.csproj", "{03555926-7A51-4E43-84E7-E7D341F5B375}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Recognizers.Tests", "tests\Bot.Builder.Community.Recognizers.Tests\Bot.Builder.Community.Recognizers.Tests.csproj", "{72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Location", "libraries\Bot.Builder.Community.Dialogs.Location\Bot.Builder.Community.Dialogs.Location.csproj", "{3898E3BB-0231-4C71-AA29-23E13A40A29A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.BestMatch", "libraries\Bot.Builder.Community.Middleware.BestMatch\Bot.Builder.Community.Middleware.BestMatch.csproj", "{A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.HandleActivityType", "libraries\Bot.Builder.Community.Middleware.HandleActivityType\Bot.Builder.Community.Middleware.HandleActivityType.csproj", "{F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Recognizers.FuzzyRecognizer", "libraries\Bot.Builder.Community.Recognizers.FuzzyRecognizer\Bot.Builder.Community.Recognizers.FuzzyRecognizer.csproj", "{D97C9FC3-80B7-48CE-9E09-DA0021B729D4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.AzureAdAuthentication", "libraries\Bot.Builder.Community.Middleware.AzureAdAuthentication\Bot.Builder.Community.Middleware.AzureAdAuthentication.csproj", "{4787E88C-2E0D-47A2-9D8C-AEC274740D75}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.SentimentAnalysis", "libraries\Bot.Builder.Community.Middleware.SentimentAnalysis\Bot.Builder.Community.Middleware.SentimentAnalysis.csproj", "{50953BCA-BA1F-4355-9E91-206FEAE8ECB7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.SpellCheck", "libraries\Bot.Builder.Community.Middleware.SpellCheck\Bot.Builder.Community.Middleware.SpellCheck.csproj", "{70941D4E-828B-4FDD-9D91-103CDEF6B4AB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.DataTypeDisambiguation", "libraries\Bot.Builder.Community.Dialogs.DataTypeDisambiguation\Bot.Builder.Community.Dialogs.DataTypeDisambiguation.csproj", "{E6B3128B-6D60-4432-BF4D-7B29297BE4C6}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documents", "Documents", "{37434BE0-8BCE-4EB1-A11F-E7FF86A7C4FB}" - ProjectSection(SolutionItems) = preProject - LICENSE = LICENSE - README.md = README.md - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Prompts", "libraries\Bot.Builder.Community.Dialogs.Prompts\Bot.Builder.Community.Dialogs.Prompts.csproj", "{A06FFA2B-A707-43D7-830C-8F40F06F1F40}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Prompts.Tests", "tests\Bot.Builder.Community.Dialogs.Prompts.Tests\Bot.Builder.Community.Dialogs.Prompts.Tests.csproj", "{480DE09E-FDDC-435B-B69D-BAB8DFF49415}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Adapters", "Adapters", "{BF310E8A-8DA1-441F-90E9-DE0E66553048}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.FormFlow", "libraries\Bot.Builder.Community.Dialogs.FormFlow\Bot.Builder.Community.Dialogs.FormFlow.csproj", "{92D84894-45F4-4A73-8FE1-9A8BEF9E3884}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Storage", "Storage", "{DC62D60A-2EA2-4DB1-B1BA-C8F38D3940B3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Storage.Elasticsearch", "libraries\Bot.Builder.Community.Storage.Elasticsearch\Bot.Builder.Community.Storage.Elasticsearch.csproj", "{70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Storage.Tests", "tests\Bot.Builder.Community.Storage.Tests\Bot.Builder.Community.Storage.Tests.csproj", "{8AAFA9EC-C78C-4859-91EC-61DD52914B42}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.ChoiceFlow", "libraries\Bot.Builder.Community.Dialogs.ChoiceFlow\Bot.Builder.Community.Dialogs.ChoiceFlow.csproj", "{11CFD052-F4E5-44F0-AD19-98FF648C7613}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Google", "libraries\Bot.Builder.Community.Adapters.Google\Bot.Builder.Community.Adapters.Google.csproj", "{2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Storage.EntityFramework", "libraries\Bot.Builder.Community.Storage.EntityFramework\Bot.Builder.Community.Storage.EntityFramework.csproj", "{1EF09D96-D5EB-4445-8369-E87A7A59FA93}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Twitter", "libraries\Bot.Builder.Community.Adapters.Twitter\Bot.Builder.Community.Adapters.Twitter.csproj", "{06CECA83-4578-467E-80DD-66C4D0526B9D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Luis", "libraries\Bot.Builder.Community.Dialogs.Luis\Bot.Builder.Community.Dialogs.Luis.csproj", "{2FE9D83B-59AB-4475-BE6F-4803118B1A81}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Alexa.Tests", "tests\Bot.Builder.Community.Adapters.Alexa.Tests\Bot.Builder.Community.Adapters.Alexa.Tests.csproj", "{07ECEE15-6D13-439F-8026-E05B70B749F8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Alexa", "libraries\Bot.Builder.Community.Adapters.Alexa\Bot.Builder.Community.Adapters.Alexa.csproj", "{0311DB07-D853-4649-9DA1-F1CA2C20B406}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Alexa.Core", "libraries\Bot.Builder.Community.Adapters.Alexa.Core\Bot.Builder.Community.Adapters.Alexa.Core.csproj", "{ACEAA5FA-1DE3-4E3A-B435-A988A4276231}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Twitter.Tests", "tests\Bot.Builder.Community.Adapters.Tests\Bot.Builder.Community.Adapters.Twitter.Tests.csproj", "{873C9B8C-2677-4586-89D3-C80FB1263596}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.RingCentral.Tests", "tests\Bot.Builder.Community.Adapters.RingCentral.Tests\Bot.Builder.Community.Adapters.RingCentral.Tests.csproj", "{441E05D3-43A9-4C4B-AB5B-06AF27742885}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Adaptive.Rest", "libraries\Bot.Builder.Community.Dialogs.Adaptive.Rest\Bot.Builder.Community.Dialogs.Adaptive.Rest.csproj", "{63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests", "tests\Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests\Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests.csproj", "{E14564ED-C929-4F43-BD1B-46D20DFAAF3A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.RingCentral", "libraries\Bot.Builder.Community.Adapters.RingCentral\Bot.Builder.Community.Adapters.RingCentral.csproj", "{042403D4-2D7B-482E-87DD-51B1CFDEC210}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Google.Core", "libraries\Bot.Builder.Community.Adapters.Google.Core\Bot.Builder.Community.Adapters.Google.Core.csproj", "{4E4FAD6B-117D-48A7-BC5D-FACFD415ED47}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Zoom", "libraries\Bot.Builder.Community.Adapters.Zoom\Bot.Builder.Community.Adapters.Zoom.csproj", "{DA1A84A1-D921-412F-A855-93FC9A525D27}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Infobip", "libraries\Bot.Builder.Community.Adapters.Infobip\Bot.Builder.Community.Adapters.Infobip.csproj", "{0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Infobip.Tests", "tests\Bot.Builder.Community.Adapters.Infobip.Tests\Bot.Builder.Community.Adapters.Infobip.Tests.csproj", "{6356EF6A-406B-4B2E-A229-C1D042C2FCF6}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug - NuGet Packages|Any CPU = Debug - NuGet Packages|Any CPU - Debug|Any CPU = Debug|Any CPU - Documentation|Any CPU = Documentation|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {03555926-7A51-4E43-84E7-E7D341F5B375}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {03555926-7A51-4E43-84E7-E7D341F5B375}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {03555926-7A51-4E43-84E7-E7D341F5B375}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {03555926-7A51-4E43-84E7-E7D341F5B375}.Debug|Any CPU.Build.0 = Debug|Any CPU - {03555926-7A51-4E43-84E7-E7D341F5B375}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {03555926-7A51-4E43-84E7-E7D341F5B375}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {03555926-7A51-4E43-84E7-E7D341F5B375}.Release|Any CPU.ActiveCfg = Release|Any CPU - {03555926-7A51-4E43-84E7-E7D341F5B375}.Release|Any CPU.Build.0 = Release|Any CPU - {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Release|Any CPU.Build.0 = Release|Any CPU - {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Release|Any CPU.Build.0 = Release|Any CPU - {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Release|Any CPU.Build.0 = Release|Any CPU - {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Release|Any CPU.Build.0 = Release|Any CPU - {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Release|Any CPU.Build.0 = Release|Any CPU - {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Release|Any CPU.Build.0 = Release|Any CPU - {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Release|Any CPU.Build.0 = Release|Any CPU - {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Release|Any CPU.Build.0 = Release|Any CPU - {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Release|Any CPU.Build.0 = Release|Any CPU - {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Release|Any CPU.Build.0 = Release|Any CPU - {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Debug|Any CPU.Build.0 = Debug|Any CPU - {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Release|Any CPU.ActiveCfg = Release|Any CPU - {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Release|Any CPU.Build.0 = Release|Any CPU - {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug - NuGet Packages|Any CPU - {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Debug - NuGet Packages|Any CPU.Build.0 = Debug - NuGet Packages|Any CPU - {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Debug|Any CPU.Build.0 = Debug|Any CPU - {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Documentation|Any CPU.ActiveCfg = Documentation|Any CPU - {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Documentation|Any CPU.Build.0 = Documentation|Any CPU - {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Release|Any CPU.ActiveCfg = Release|Any CPU - {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Release|Any CPU.Build.0 = Release|Any CPU - {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Debug|Any CPU.Build.0 = Debug|Any CPU - {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Release|Any CPU.ActiveCfg = Release|Any CPU - {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Release|Any CPU.Build.0 = Release|Any CPU - {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Release|Any CPU.Build.0 = Release|Any CPU - {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Debug|Any CPU.Build.0 = Debug|Any CPU - {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Release|Any CPU.ActiveCfg = Release|Any CPU - {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Release|Any CPU.Build.0 = Release|Any CPU - {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Release|Any CPU.Build.0 = Release|Any CPU - {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Release|Any CPU.Build.0 = Release|Any CPU - {06CECA83-4578-467E-80DD-66C4D0526B9D}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {06CECA83-4578-467E-80DD-66C4D0526B9D}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {06CECA83-4578-467E-80DD-66C4D0526B9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {06CECA83-4578-467E-80DD-66C4D0526B9D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {06CECA83-4578-467E-80DD-66C4D0526B9D}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {06CECA83-4578-467E-80DD-66C4D0526B9D}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {06CECA83-4578-467E-80DD-66C4D0526B9D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {06CECA83-4578-467E-80DD-66C4D0526B9D}.Release|Any CPU.Build.0 = Release|Any CPU - {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Release|Any CPU.Build.0 = Release|Any CPU - {07ECEE15-6D13-439F-8026-E05B70B749F8}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {07ECEE15-6D13-439F-8026-E05B70B749F8}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {07ECEE15-6D13-439F-8026-E05B70B749F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {07ECEE15-6D13-439F-8026-E05B70B749F8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {07ECEE15-6D13-439F-8026-E05B70B749F8}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {07ECEE15-6D13-439F-8026-E05B70B749F8}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {07ECEE15-6D13-439F-8026-E05B70B749F8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {07ECEE15-6D13-439F-8026-E05B70B749F8}.Release|Any CPU.Build.0 = Release|Any CPU - {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Release|Any CPU.Build.0 = Release|Any CPU - {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Release|Any CPU.Build.0 = Release|Any CPU - {873C9B8C-2677-4586-89D3-C80FB1263596}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {873C9B8C-2677-4586-89D3-C80FB1263596}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {873C9B8C-2677-4586-89D3-C80FB1263596}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {873C9B8C-2677-4586-89D3-C80FB1263596}.Debug|Any CPU.Build.0 = Debug|Any CPU - {873C9B8C-2677-4586-89D3-C80FB1263596}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {873C9B8C-2677-4586-89D3-C80FB1263596}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {873C9B8C-2677-4586-89D3-C80FB1263596}.Release|Any CPU.ActiveCfg = Release|Any CPU - {873C9B8C-2677-4586-89D3-C80FB1263596}.Release|Any CPU.Build.0 = Release|Any CPU - {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Debug|Any CPU.Build.0 = Debug|Any CPU - {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Release|Any CPU.ActiveCfg = Release|Any CPU - {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Release|Any CPU.Build.0 = Release|Any CPU - {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Release|Any CPU.Build.0 = Release|Any CPU - {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Release|Any CPU.Build.0 = Release|Any CPU - {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Debug|Any CPU.Build.0 = Debug|Any CPU - {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Release|Any CPU.ActiveCfg = Release|Any CPU - {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Release|Any CPU.Build.0 = Release|Any CPU - {4E4FAD6B-117D-48A7-BC5D-FACFD415ED47}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {4E4FAD6B-117D-48A7-BC5D-FACFD415ED47}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {4E4FAD6B-117D-48A7-BC5D-FACFD415ED47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4E4FAD6B-117D-48A7-BC5D-FACFD415ED47}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4E4FAD6B-117D-48A7-BC5D-FACFD415ED47}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {4E4FAD6B-117D-48A7-BC5D-FACFD415ED47}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {4E4FAD6B-117D-48A7-BC5D-FACFD415ED47}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4E4FAD6B-117D-48A7-BC5D-FACFD415ED47}.Release|Any CPU.Build.0 = Release|Any CPU - {DA1A84A1-D921-412F-A855-93FC9A525D27}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {DA1A84A1-D921-412F-A855-93FC9A525D27}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {DA1A84A1-D921-412F-A855-93FC9A525D27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DA1A84A1-D921-412F-A855-93FC9A525D27}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DA1A84A1-D921-412F-A855-93FC9A525D27}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {DA1A84A1-D921-412F-A855-93FC9A525D27}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {DA1A84A1-D921-412F-A855-93FC9A525D27}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DA1A84A1-D921-412F-A855-93FC9A525D27}.Release|Any CPU.Build.0 = Release|Any CPU - {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Release|Any CPU.Build.0 = Release|Any CPU - {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU - {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU - {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU - {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Documentation|Any CPU.Build.0 = Debug|Any CPU - {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {B56E49F6-DF51-4114-90E7-F62ECF34B802} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} - {2975F285-9749-49EA-A6E6-E5D78DDE20B6} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} - {08759E28-8592-4EBA-9A07-19A5BED3FB0C} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} - {03555926-7A51-4E43-84E7-E7D341F5B375} = {840D4038-9AB8-4750-9FFE-365386CE47E2} - {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2} = {840D4038-9AB8-4750-9FFE-365386CE47E2} - {3898E3BB-0231-4C71-AA29-23E13A40A29A} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} - {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} - {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} - {D97C9FC3-80B7-48CE-9E09-DA0021B729D4} = {2975F285-9749-49EA-A6E6-E5D78DDE20B6} - {4787E88C-2E0D-47A2-9D8C-AEC274740D75} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} - {50953BCA-BA1F-4355-9E91-206FEAE8ECB7} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} - {70941D4E-828B-4FDD-9D91-103CDEF6B4AB} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} - {E6B3128B-6D60-4432-BF4D-7B29297BE4C6} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} - {A06FFA2B-A707-43D7-830C-8F40F06F1F40} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} - {480DE09E-FDDC-435B-B69D-BAB8DFF49415} = {840D4038-9AB8-4750-9FFE-365386CE47E2} - {BF310E8A-8DA1-441F-90E9-DE0E66553048} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} - {92D84894-45F4-4A73-8FE1-9A8BEF9E3884} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} - {DC62D60A-2EA2-4DB1-B1BA-C8F38D3940B3} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} - {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89} = {DC62D60A-2EA2-4DB1-B1BA-C8F38D3940B3} - {8AAFA9EC-C78C-4859-91EC-61DD52914B42} = {840D4038-9AB8-4750-9FFE-365386CE47E2} - {11CFD052-F4E5-44F0-AD19-98FF648C7613} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} - {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} - {1EF09D96-D5EB-4445-8369-E87A7A59FA93} = {DC62D60A-2EA2-4DB1-B1BA-C8F38D3940B3} - {06CECA83-4578-467E-80DD-66C4D0526B9D} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} - {2FE9D83B-59AB-4475-BE6F-4803118B1A81} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} - {07ECEE15-6D13-439F-8026-E05B70B749F8} = {840D4038-9AB8-4750-9FFE-365386CE47E2} - {0311DB07-D853-4649-9DA1-F1CA2C20B406} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} - {ACEAA5FA-1DE3-4E3A-B435-A988A4276231} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} - {873C9B8C-2677-4586-89D3-C80FB1263596} = {840D4038-9AB8-4750-9FFE-365386CE47E2} - {441E05D3-43A9-4C4B-AB5B-06AF27742885} = {840D4038-9AB8-4750-9FFE-365386CE47E2} - {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} - {E14564ED-C929-4F43-BD1B-46D20DFAAF3A} = {840D4038-9AB8-4750-9FFE-365386CE47E2} - {042403D4-2D7B-482E-87DD-51B1CFDEC210} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} - {4E4FAD6B-117D-48A7-BC5D-FACFD415ED47} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} - {DA1A84A1-D921-412F-A855-93FC9A525D27} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} - {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} - {6356EF6A-406B-4B2E-A229-C1D042C2FCF6} = {840D4038-9AB8-4750-9FFE-365386CE47E2} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {9FE3B75E-BA2B-45BC-BBF0-DDA8BA10C4F0} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29905.134 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{57D9879A-FC9F-468C-B86F-BE45A1472F88}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{840D4038-9AB8-4750-9FFE-365386CE47E2}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Middleware", "Middleware", "{B56E49F6-DF51-4114-90E7-F62ECF34B802}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Recognizers", "Recognizers", "{2975F285-9749-49EA-A6E6-E5D78DDE20B6}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dialogs", "Dialogs", "{08759E28-8592-4EBA-9A07-19A5BED3FB0C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.Tests", "tests\Bot.Builder.Community.Middleware.Tests\Bot.Builder.Community.Middleware.Tests.csproj", "{03555926-7A51-4E43-84E7-E7D341F5B375}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Recognizers.Tests", "tests\Bot.Builder.Community.Recognizers.Tests\Bot.Builder.Community.Recognizers.Tests.csproj", "{72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Location", "libraries\Bot.Builder.Community.Dialogs.Location\Bot.Builder.Community.Dialogs.Location.csproj", "{3898E3BB-0231-4C71-AA29-23E13A40A29A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.BestMatch", "libraries\Bot.Builder.Community.Middleware.BestMatch\Bot.Builder.Community.Middleware.BestMatch.csproj", "{A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.HandleActivityType", "libraries\Bot.Builder.Community.Middleware.HandleActivityType\Bot.Builder.Community.Middleware.HandleActivityType.csproj", "{F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Recognizers.FuzzyRecognizer", "libraries\Bot.Builder.Community.Recognizers.FuzzyRecognizer\Bot.Builder.Community.Recognizers.FuzzyRecognizer.csproj", "{D97C9FC3-80B7-48CE-9E09-DA0021B729D4}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.AzureAdAuthentication", "libraries\Bot.Builder.Community.Middleware.AzureAdAuthentication\Bot.Builder.Community.Middleware.AzureAdAuthentication.csproj", "{4787E88C-2E0D-47A2-9D8C-AEC274740D75}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.SentimentAnalysis", "libraries\Bot.Builder.Community.Middleware.SentimentAnalysis\Bot.Builder.Community.Middleware.SentimentAnalysis.csproj", "{50953BCA-BA1F-4355-9E91-206FEAE8ECB7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Middleware.SpellCheck", "libraries\Bot.Builder.Community.Middleware.SpellCheck\Bot.Builder.Community.Middleware.SpellCheck.csproj", "{70941D4E-828B-4FDD-9D91-103CDEF6B4AB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.DataTypeDisambiguation", "libraries\Bot.Builder.Community.Dialogs.DataTypeDisambiguation\Bot.Builder.Community.Dialogs.DataTypeDisambiguation.csproj", "{E6B3128B-6D60-4432-BF4D-7B29297BE4C6}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documents", "Documents", "{37434BE0-8BCE-4EB1-A11F-E7FF86A7C4FB}" + ProjectSection(SolutionItems) = preProject + LICENSE = LICENSE + README.md = README.md + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Prompts", "libraries\Bot.Builder.Community.Dialogs.Prompts\Bot.Builder.Community.Dialogs.Prompts.csproj", "{A06FFA2B-A707-43D7-830C-8F40F06F1F40}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Prompts.Tests", "tests\Bot.Builder.Community.Dialogs.Prompts.Tests\Bot.Builder.Community.Dialogs.Prompts.Tests.csproj", "{480DE09E-FDDC-435B-B69D-BAB8DFF49415}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Adapters", "Adapters", "{BF310E8A-8DA1-441F-90E9-DE0E66553048}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.FormFlow", "libraries\Bot.Builder.Community.Dialogs.FormFlow\Bot.Builder.Community.Dialogs.FormFlow.csproj", "{92D84894-45F4-4A73-8FE1-9A8BEF9E3884}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Storage", "Storage", "{DC62D60A-2EA2-4DB1-B1BA-C8F38D3940B3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Storage.Elasticsearch", "libraries\Bot.Builder.Community.Storage.Elasticsearch\Bot.Builder.Community.Storage.Elasticsearch.csproj", "{70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Storage.Tests", "tests\Bot.Builder.Community.Storage.Tests\Bot.Builder.Community.Storage.Tests.csproj", "{8AAFA9EC-C78C-4859-91EC-61DD52914B42}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.ChoiceFlow", "libraries\Bot.Builder.Community.Dialogs.ChoiceFlow\Bot.Builder.Community.Dialogs.ChoiceFlow.csproj", "{11CFD052-F4E5-44F0-AD19-98FF648C7613}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Google", "libraries\Bot.Builder.Community.Adapters.Google\Bot.Builder.Community.Adapters.Google.csproj", "{2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Storage.EntityFramework", "libraries\Bot.Builder.Community.Storage.EntityFramework\Bot.Builder.Community.Storage.EntityFramework.csproj", "{1EF09D96-D5EB-4445-8369-E87A7A59FA93}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Twitter", "libraries\Bot.Builder.Community.Adapters.Twitter\Bot.Builder.Community.Adapters.Twitter.csproj", "{06CECA83-4578-467E-80DD-66C4D0526B9D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Luis", "libraries\Bot.Builder.Community.Dialogs.Luis\Bot.Builder.Community.Dialogs.Luis.csproj", "{2FE9D83B-59AB-4475-BE6F-4803118B1A81}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Alexa.Tests", "tests\Bot.Builder.Community.Adapters.Alexa.Tests\Bot.Builder.Community.Adapters.Alexa.Tests.csproj", "{07ECEE15-6D13-439F-8026-E05B70B749F8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Alexa", "libraries\Bot.Builder.Community.Adapters.Alexa\Bot.Builder.Community.Adapters.Alexa.csproj", "{0311DB07-D853-4649-9DA1-F1CA2C20B406}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Alexa.Core", "libraries\Bot.Builder.Community.Adapters.Alexa.Core\Bot.Builder.Community.Adapters.Alexa.Core.csproj", "{ACEAA5FA-1DE3-4E3A-B435-A988A4276231}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Twitter.Tests", "tests\Bot.Builder.Community.Adapters.Tests\Bot.Builder.Community.Adapters.Twitter.Tests.csproj", "{873C9B8C-2677-4586-89D3-C80FB1263596}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.RingCentral.Tests", "tests\Bot.Builder.Community.Adapters.RingCentral.Tests\Bot.Builder.Community.Adapters.RingCentral.Tests.csproj", "{441E05D3-43A9-4C4B-AB5B-06AF27742885}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Adaptive.Rest", "libraries\Bot.Builder.Community.Dialogs.Adaptive.Rest\Bot.Builder.Community.Dialogs.Adaptive.Rest.csproj", "{63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests", "tests\Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests\Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests.csproj", "{E14564ED-C929-4F43-BD1B-46D20DFAAF3A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.RingCentral", "libraries\Bot.Builder.Community.Adapters.RingCentral\Bot.Builder.Community.Adapters.RingCentral.csproj", "{042403D4-2D7B-482E-87DD-51B1CFDEC210}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Zoom", "libraries\Bot.Builder.Community.Adapters.Zoom\Bot.Builder.Community.Adapters.Zoom.csproj", "{DA1A84A1-D921-412F-A855-93FC9A525D27}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Infobip", "libraries\Bot.Builder.Community.Adapters.Infobip\Bot.Builder.Community.Adapters.Infobip.csproj", "{0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Infobip.Tests", "tests\Bot.Builder.Community.Adapters.Infobip.Tests\Bot.Builder.Community.Adapters.Infobip.Tests.csproj", "{6356EF6A-406B-4B2E-A229-C1D042C2FCF6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bot.Builder.Community.Adapters.Google.Core", "libraries\Bot.Builder.Community.Adapters.Google.Core\Bot.Builder.Community.Adapters.Google.Core.csproj", "{7856219A-3537-4F81-86A8-4CB020BD2B9A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug - NuGet Packages|Any CPU = Debug - NuGet Packages|Any CPU + Debug|Any CPU = Debug|Any CPU + Documentation|Any CPU = Documentation|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {03555926-7A51-4E43-84E7-E7D341F5B375}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {03555926-7A51-4E43-84E7-E7D341F5B375}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {03555926-7A51-4E43-84E7-E7D341F5B375}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03555926-7A51-4E43-84E7-E7D341F5B375}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03555926-7A51-4E43-84E7-E7D341F5B375}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {03555926-7A51-4E43-84E7-E7D341F5B375}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {03555926-7A51-4E43-84E7-E7D341F5B375}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03555926-7A51-4E43-84E7-E7D341F5B375}.Release|Any CPU.Build.0 = Release|Any CPU + {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2}.Release|Any CPU.Build.0 = Release|Any CPU + {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3898E3BB-0231-4C71-AA29-23E13A40A29A}.Release|Any CPU.Build.0 = Release|Any CPU + {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D}.Release|Any CPU.Build.0 = Release|Any CPU + {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D}.Release|Any CPU.Build.0 = Release|Any CPU + {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D97C9FC3-80B7-48CE-9E09-DA0021B729D4}.Release|Any CPU.Build.0 = Release|Any CPU + {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4787E88C-2E0D-47A2-9D8C-AEC274740D75}.Release|Any CPU.Build.0 = Release|Any CPU + {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {50953BCA-BA1F-4355-9E91-206FEAE8ECB7}.Release|Any CPU.Build.0 = Release|Any CPU + {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {70941D4E-828B-4FDD-9D91-103CDEF6B4AB}.Release|Any CPU.Build.0 = Release|Any CPU + {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E6B3128B-6D60-4432-BF4D-7B29297BE4C6}.Release|Any CPU.Build.0 = Release|Any CPU + {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A06FFA2B-A707-43D7-830C-8F40F06F1F40}.Release|Any CPU.Build.0 = Release|Any CPU + {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Debug|Any CPU.Build.0 = Debug|Any CPU + {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Release|Any CPU.ActiveCfg = Release|Any CPU + {480DE09E-FDDC-435B-B69D-BAB8DFF49415}.Release|Any CPU.Build.0 = Release|Any CPU + {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug - NuGet Packages|Any CPU + {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Debug - NuGet Packages|Any CPU.Build.0 = Debug - NuGet Packages|Any CPU + {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Debug|Any CPU.Build.0 = Debug|Any CPU + {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Documentation|Any CPU.ActiveCfg = Documentation|Any CPU + {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Documentation|Any CPU.Build.0 = Documentation|Any CPU + {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Release|Any CPU.ActiveCfg = Release|Any CPU + {92D84894-45F4-4A73-8FE1-9A8BEF9E3884}.Release|Any CPU.Build.0 = Release|Any CPU + {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Release|Any CPU.ActiveCfg = Release|Any CPU + {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89}.Release|Any CPU.Build.0 = Release|Any CPU + {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8AAFA9EC-C78C-4859-91EC-61DD52914B42}.Release|Any CPU.Build.0 = Release|Any CPU + {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Debug|Any CPU.Build.0 = Debug|Any CPU + {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Release|Any CPU.ActiveCfg = Release|Any CPU + {11CFD052-F4E5-44F0-AD19-98FF648C7613}.Release|Any CPU.Build.0 = Release|Any CPU + {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3}.Release|Any CPU.Build.0 = Release|Any CPU + {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1EF09D96-D5EB-4445-8369-E87A7A59FA93}.Release|Any CPU.Build.0 = Release|Any CPU + {06CECA83-4578-467E-80DD-66C4D0526B9D}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {06CECA83-4578-467E-80DD-66C4D0526B9D}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {06CECA83-4578-467E-80DD-66C4D0526B9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {06CECA83-4578-467E-80DD-66C4D0526B9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {06CECA83-4578-467E-80DD-66C4D0526B9D}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {06CECA83-4578-467E-80DD-66C4D0526B9D}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {06CECA83-4578-467E-80DD-66C4D0526B9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {06CECA83-4578-467E-80DD-66C4D0526B9D}.Release|Any CPU.Build.0 = Release|Any CPU + {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FE9D83B-59AB-4475-BE6F-4803118B1A81}.Release|Any CPU.Build.0 = Release|Any CPU + {07ECEE15-6D13-439F-8026-E05B70B749F8}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {07ECEE15-6D13-439F-8026-E05B70B749F8}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {07ECEE15-6D13-439F-8026-E05B70B749F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07ECEE15-6D13-439F-8026-E05B70B749F8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07ECEE15-6D13-439F-8026-E05B70B749F8}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {07ECEE15-6D13-439F-8026-E05B70B749F8}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {07ECEE15-6D13-439F-8026-E05B70B749F8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07ECEE15-6D13-439F-8026-E05B70B749F8}.Release|Any CPU.Build.0 = Release|Any CPU + {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0311DB07-D853-4649-9DA1-F1CA2C20B406}.Release|Any CPU.Build.0 = Release|Any CPU + {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ACEAA5FA-1DE3-4E3A-B435-A988A4276231}.Release|Any CPU.Build.0 = Release|Any CPU + {873C9B8C-2677-4586-89D3-C80FB1263596}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {873C9B8C-2677-4586-89D3-C80FB1263596}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {873C9B8C-2677-4586-89D3-C80FB1263596}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {873C9B8C-2677-4586-89D3-C80FB1263596}.Debug|Any CPU.Build.0 = Debug|Any CPU + {873C9B8C-2677-4586-89D3-C80FB1263596}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {873C9B8C-2677-4586-89D3-C80FB1263596}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {873C9B8C-2677-4586-89D3-C80FB1263596}.Release|Any CPU.ActiveCfg = Release|Any CPU + {873C9B8C-2677-4586-89D3-C80FB1263596}.Release|Any CPU.Build.0 = Release|Any CPU + {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Debug|Any CPU.Build.0 = Debug|Any CPU + {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Release|Any CPU.ActiveCfg = Release|Any CPU + {441E05D3-43A9-4C4B-AB5B-06AF27742885}.Release|Any CPU.Build.0 = Release|Any CPU + {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D}.Release|Any CPU.Build.0 = Release|Any CPU + {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E14564ED-C929-4F43-BD1B-46D20DFAAF3A}.Release|Any CPU.Build.0 = Release|Any CPU + {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Debug|Any CPU.Build.0 = Debug|Any CPU + {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Release|Any CPU.ActiveCfg = Release|Any CPU + {042403D4-2D7B-482E-87DD-51B1CFDEC210}.Release|Any CPU.Build.0 = Release|Any CPU + {DA1A84A1-D921-412F-A855-93FC9A525D27}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {DA1A84A1-D921-412F-A855-93FC9A525D27}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {DA1A84A1-D921-412F-A855-93FC9A525D27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA1A84A1-D921-412F-A855-93FC9A525D27}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA1A84A1-D921-412F-A855-93FC9A525D27}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {DA1A84A1-D921-412F-A855-93FC9A525D27}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {DA1A84A1-D921-412F-A855-93FC9A525D27}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA1A84A1-D921-412F-A855-93FC9A525D27}.Release|Any CPU.Build.0 = Release|Any CPU + {7856219A-3537-4F81-86A8-4CB020BD2B9A}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {7856219A-3537-4F81-86A8-4CB020BD2B9A}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {7856219A-3537-4F81-86A8-4CB020BD2B9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7856219A-3537-4F81-86A8-4CB020BD2B9A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7856219A-3537-4F81-86A8-4CB020BD2B9A}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {7856219A-3537-4F81-86A8-4CB020BD2B9A}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {7856219A-3537-4F81-86A8-4CB020BD2B9A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7856219A-3537-4F81-86A8-4CB020BD2B9A}.Release|Any CPU.Build.0 = Release|Any CPU + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C}.Release|Any CPU.Build.0 = Release|Any CPU + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Debug - NuGet Packages|Any CPU.ActiveCfg = Debug|Any CPU + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Debug - NuGet Packages|Any CPU.Build.0 = Debug|Any CPU + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Documentation|Any CPU.ActiveCfg = Debug|Any CPU + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Documentation|Any CPU.Build.0 = Debug|Any CPU + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {B56E49F6-DF51-4114-90E7-F62ECF34B802} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} + {2975F285-9749-49EA-A6E6-E5D78DDE20B6} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} + {08759E28-8592-4EBA-9A07-19A5BED3FB0C} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} + {03555926-7A51-4E43-84E7-E7D341F5B375} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + {72C4AC3D-C602-41D2-A701-3E1F3DE8B5E2} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + {3898E3BB-0231-4C71-AA29-23E13A40A29A} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} + {A6710EB5-BED1-4E83-A01A-FAD76BB68A4D} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} + {F21AB87A-3A95-4C13-9E58-3BA83C5A3D4D} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} + {D97C9FC3-80B7-48CE-9E09-DA0021B729D4} = {2975F285-9749-49EA-A6E6-E5D78DDE20B6} + {4787E88C-2E0D-47A2-9D8C-AEC274740D75} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} + {50953BCA-BA1F-4355-9E91-206FEAE8ECB7} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} + {70941D4E-828B-4FDD-9D91-103CDEF6B4AB} = {B56E49F6-DF51-4114-90E7-F62ECF34B802} + {E6B3128B-6D60-4432-BF4D-7B29297BE4C6} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} + {A06FFA2B-A707-43D7-830C-8F40F06F1F40} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} + {480DE09E-FDDC-435B-B69D-BAB8DFF49415} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + {BF310E8A-8DA1-441F-90E9-DE0E66553048} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} + {92D84894-45F4-4A73-8FE1-9A8BEF9E3884} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} + {DC62D60A-2EA2-4DB1-B1BA-C8F38D3940B3} = {57D9879A-FC9F-468C-B86F-BE45A1472F88} + {70B2D601-B6C9-4E4C-9E79-FE6DD1724A89} = {DC62D60A-2EA2-4DB1-B1BA-C8F38D3940B3} + {8AAFA9EC-C78C-4859-91EC-61DD52914B42} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + {11CFD052-F4E5-44F0-AD19-98FF648C7613} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} + {2CCB1E5E-A4B5-46FA-B38D-5C5CA04A2CD3} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + {1EF09D96-D5EB-4445-8369-E87A7A59FA93} = {DC62D60A-2EA2-4DB1-B1BA-C8F38D3940B3} + {06CECA83-4578-467E-80DD-66C4D0526B9D} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + {2FE9D83B-59AB-4475-BE6F-4803118B1A81} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} + {07ECEE15-6D13-439F-8026-E05B70B749F8} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + {0311DB07-D853-4649-9DA1-F1CA2C20B406} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + {ACEAA5FA-1DE3-4E3A-B435-A988A4276231} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + {873C9B8C-2677-4586-89D3-C80FB1263596} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + {441E05D3-43A9-4C4B-AB5B-06AF27742885} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + {63AFED39-D4AC-4B1E-94B9-EF58EE687B3D} = {08759E28-8592-4EBA-9A07-19A5BED3FB0C} + {E14564ED-C929-4F43-BD1B-46D20DFAAF3A} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + {042403D4-2D7B-482E-87DD-51B1CFDEC210} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + {DA1A84A1-D921-412F-A855-93FC9A525D27} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + {7856219A-3537-4F81-86A8-4CB020BD2B9A} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9FE3B75E-BA2B-45BC-BBF0-DDA8BA10C4F0} + EndGlobalSection +EndGlobal diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/DialogFlowRequestMapper.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/DialogFlowRequestMapper.cs index d89cf0e0..b307dffa 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/DialogFlowRequestMapper.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/DialogFlowRequestMapper.cs @@ -28,9 +28,9 @@ public Activity RequestToActivity(DialogFlowRequest request) var actionIntent = payload.Inputs.FirstOrDefault(i => i.Intent.ToLowerInvariant().StartsWith("actions.intent"))?.Intent; var queryText = StripInvocation(payload.Inputs[0]?.RawInputs[0]?.Query, Options.ActionInvocationName); - if (request.QueryResult.Intent.IsFallback) + if (request.QueryResult.Intent.IsFallback || request.QueryResult.Intent.DisplayName.ToLowerInvariant() == "launch") { - if (string.IsNullOrEmpty(queryText)) + if (string.IsNullOrEmpty(queryText) || request.QueryResult.Intent.DisplayName.ToLowerInvariant() == "launch") { activity.Type = ActivityTypes.ConversationUpdate; activity.MembersAdded = new List() { new ChannelAccount() { Id = activity.From.Id } }; diff --git a/libraries/Bot.Builder.Community.Adapters.Google/README.md b/libraries/Bot.Builder.Community.Adapters.Google/README.md index de020398..6c22b8bd 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google/README.md +++ b/libraries/Bot.Builder.Community.Adapters.Google/README.md @@ -3,7 +3,7 @@ ## Build status | Branch | Status | Recommended NuGet package version | | ------ | ------ | ------ | -| master | [![Build status](https://ci.appveyor.com/api/projects/status/b9123gl3kih8x9cb?svg=true)](https://ci.appveyor.com/project/garypretty/botbuilder-community) | Preview [available via MyGet (version 4.6.4-beta0056)](https://www.myget.org/feed/botbuilder-community-dotnet/package/nuget/Bot.Builder.Community.Adapters.Google/4.6.4-beta0056) | +| master | [![Build status](https://ci.appveyor.com/api/projects/status/b9123gl3kih8x9cb?svg=true)](https://ci.appveyor.com/project/garypretty/botbuilder-community) | [Available via NuGet](https://www.nuget.org/packages/Bot.Builder.Community.Adapters.Google/) | ## Description @@ -11,7 +11,7 @@ This is part of the [Bot Builder Community Extensions](https://github.com/botbui The Google Adapter allows you to add an additional endpoint to your bot for custom Google Actions. The Google endpoint can be used in conjunction with other channels meaning, for example, you can have a bot exposed on out of the box channels such as Facebook and -Teams, but also via a Google Action (as well as side by side with the Alexa / Twitter Adapters also available from the Bot Builder Community Project). +Teams, but also via a Google Action (as well as side by side with other adapters (e.g. the Alexa adapter) also available from the Bot Builder Community Project). Incoming Google Action requests are transformed, by the adapter, into Bot Builder Activties and then when your bot responds, the adapter transforms the outgoing Activity into a Google response. @@ -25,11 +25,12 @@ The adapter currently supports the following scenarios; ## Installation -The preview of the next version of the Google Adapter is [available via MyGet (version 4.6.4-beta0036)](https://www.myget.org/feed/botbuilder-community-dotnet/package/nuget/Bot.Builder.Community.Adapters.Google/4.6.4-beta0036). +Available via NuGet package [Bot.Builder.Community.Adapters.Google](https://www.nuget.org/packages/Bot.Builder.Community.Adapters.Google/). + +Install into your project use the following command in the package manager. -To install into your project use the following command in the package manager. If you wish to use the Visual Studio package manager, then add https://www.myget.org/F/botbuilder-community-dotnet/api/v3/index.json as an additional package source. ``` - PM> Install-Package Bot.Builder.Community.Adapters.Google -Version 4.6.4-beta0036 -Source https://www.myget.org/F/botbuilder-community-dotnet/api/v3/index.json + PM> Install-Package Bot.Builder.Community.Adapters.Google ``` ## Sample @@ -53,7 +54,13 @@ In this article you will learn how to connect a bot to Google Assistant using th * Access to the Actions on Google developer console with sufficient permissions to login to create / manage projects at [https://console.actions.google.com/](https://console.actions.google.com/). If you do not have this you can create an account for free. -### Create an Actions on Google project +### Configuring Google Action (via Actions on Google or DialogFlow) + +The Google adapter supports connecting to Actions on Google (the conversations webhook) or via DialogFlow. It is **recommended to use Actions on Google** if possible. + +The following two sections describe hwo how to correctly configure your Google Action. + +#### Create an Actions on Google project (recommended) 1. Log into the [Actions on Google console](https://console.actions.google.com/) and then click the **New project** button. @@ -118,7 +125,53 @@ In this article you will learn how to connect a bot to Google Assistant using th } ``` -10. Save your new Action package (.json) file. We will update your Actions SDK project later, using the **gactions** cli tool you previously downloaded, but you still need to update the URL to your bot's endpoint. To obtain the correct endpoint, you need to wire up the Google Adapter into your bot and deploy it. +10. Save your new Action package (.json) file. We will update your Actions SDK project later, using the **gactions** cli tool you previously downloaded, but you still need to update the URL to your bot's endpoint. To obtain the correct endpoint, you need to wire up the Google Adapter and complete configuration of your bot using the details later in this article into your bot and deploy it. + +#### Configuring a Google Action using DialogFlow (alternative) + +1. Log into the [DialogFlow console](https://dialogflow.cloud.google.com/) and then select the dropdown at the drop of the lefthand menu and click the **Create new agent** button. + +2. Provide a name for your agent and select appropriate language / timezone. Under the **Google Project** section leave this set to **Create a new Google Project**. + +![Create new DialogFlow agent](/libraries/Bot.Builder.Community.Adapters.Google/media/dialog-flow-create-agent.PNG?raw=true) + +3. You will then be presented with the intents screen for your new agent. Two intents have been created for you, 'Default Fallback Intent' and 'Welcome Intent'. + +![DialogFlow agent created](/libraries/Bot.Builder.Community.Adapters.Google/media/dialog-flow-agent-created.PNG?raw=true) + +4. Select the 'Wecome Intent' and delete this Intent, leaving the single 'Default Fallback Intent'. + +***You may choose, depending on your requirements to create additional intents. If you do (and you configure the fulfilment for these intents to be directed to your bot), they will be receieved by your bot as Event activities, allowing you to handle them. However, for a default setup, on the single fallback intent is required and any requests receieved by this intent will be transformed into Bot Framework activites as described later in this article.*** + +5. Select the 'Default Fallback Intent' to see the details page for this Intent. Next scroll down to the **Responses** section and use the delete icon to remove the default responses against this Intent. + +![DialogFlow delete responses](/libraries/Bot.Builder.Community.Adapters.Google/media/dialog-flow-delete-responses.PNG?raw=true) + +6. Scroll down to the **Fulfilment** section on the Intent detais page and select the toggle to enable **Enable webhook call for this intent**. Also ensure that the **Set this intent as end of conversation** toggle is set to off / false. + +![DialogFlow enable intent fulfilment](/libraries/Bot.Builder.Community.Adapters.Google/media/dialog-flow-enable-intent-fulfilment.PNG?raw=true) + +7. Click the **Save** button at the top of the page to save the changes to the Intent. + +8. Navigate back to the Intents tab by selecting **Intents** on the left hand menu. Click the **Create Intent** button to add an additional intent. Give the intent the name 'Launch'. As with the **Default Fallback Intent**, enable webhook fulfilment for this intent and ensure the **Set this intent as end of conversation** toggle is set to off / false (this will be on by default). + +9. Navigate to the **Fulfilment** tab using the left hand menu. Use the toggle to enable webhook for your agent. On this page is also where you will enter the **URL** for your bot's endpoint once you have it (this is how the DialogFlow agent knows to sent incoming requests to your bot). You will need to re-visit this page and update this URL once you have completed configuration of your bot, as detailed later in this article. + +![Configure DialogFlow fulfilment](/libraries/Bot.Builder.Community.Adapters.Google/media/dialog-flow-fulfilment.PNG?raw=true) + +10. Next you need to configure the Google Assistant integration for your agent, allowing you to call your agent from Google Assistant devices / apps. Select the **Integrations** tab on the left hand menu and then click **Integration settings** under **Google Assistant**. On the popup dialog, select the 'Launch' intent as the intent to trigger for **Explicit Invocation**. + +![Configure Google Assistant Integration](/libraries/Bot.Builder.Community.Adapters.Google/media/dialog-flow-configure-assistant-1.PNG?raw=true) + +11. You can now also click **MANAGE ASSISTANT APP** to navigate to the console for the Google Action that was created for you automatically when you created your agent. Once there you can click **Decide how your action is invoked**. + +![Configure Google Action Invocaton Link](/libraries/Bot.Builder.Community.Adapters.Google/media/dialog-flow-configure-action-invocation.PNG?raw=true) + +12. On the **Invocation** page, you can set the invocation name for your action (which you will need in order to complete configuration of your bot) and also choose other settings such as the voice used. Once you have defined your invocation name and amended any other settings, clikc the **Save** button. + +13. At this stage, make a note of the Action Project ID, visible in the URL of the console. e.g. https://console.actions.google.com/project/**my-sample-agent-abcde**/overview. You will require this when configuring your bot. + +![Configure Google Action Invocaton](/libraries/Bot.Builder.Community.Adapters.Google/media/dialog-flow-configure-action-invocation-2.PNG?raw=true) ### Wiring up the Google adapter in your bot @@ -133,18 +186,21 @@ Add the [Bot.Builder.Community.Adapters.Google](https://www.nuget.org/packages/ Create a new class that inherits from the ***GoogleAdapter*** class. This class will act as our adapter for Google Assistant. It includes error handling capabilities (much like the ***BotFrameworkAdapterWithErrorHandler*** class already in the sample, used for handling requests from Azure Bot Service). ```csharp -public GoogleAdapterWithErrorHandler(ILogger logger, GoogleAdapterOptions adapterOptions) - : base(adapterOptions, logger) -{ - OnTurnError = async (turnContext, exception) => + public class GoogleAdapterWithErrorHandler : GoogleAdapter { - // Log any leaked exception from the application. - logger.LogError($"Exception caught : {exception.Message}"); - - // Send a catch-all apology to the user. - await turnContext.SendActivityAsync("Sorry, it looks like something went wrong."); - }; -} + public GoogleAdapterWithErrorHandler(ILogger logger, GoogleAdapterOptions adapterOptions) + : base(adapterOptions, logger) + { + OnTurnError = async (turnContext, exception) => + { + // Log any leaked exception from the application. + logger.LogError($"Exception caught : {exception.Message}"); + + // Send a catch-all apology to the user. + await turnContext.SendActivityAsync("Sorry, it looks like something went wrong."); + }; + } + } ``` You will also need to add the following using statements. @@ -193,7 +249,17 @@ using Microsoft.Bot.Builder; #### Inject Google Adapter and Google Adapter Options In Your Bot Startup.cs -1. Add the following code into the ***ConfigureServices*** method within your Startup.cs file, which will register your Google adapter and make it available for your new controller class. We will also create and register a ***GoogleAdapterOptions*** class, which will contain necessary information for your adapter to function correctly. You need to replace "YOUR-ACTION-DISPLAY-NAME" with the display name you gave to your action, which you also specified in your action package in the earlier step. You also need to replace "YOUR-PROJECT-ID" with the ID of your **Actions on Google** project - you can find this at the end of the **gactions** cli command you made a note of in an earlier step. +1. Add the following code into the ***ConfigureServices*** method within your Startup.cs file, which will register your Google adapter and make it available for your new controller class. We will also create and register a ***GoogleAdapterOptions*** class, which will contain necessary information for your adapter to function correctly. + +You need to set the following properties + +* **WebhookType** - Se this to either GoogleWebhookType.Conversation or GoogleWebhookType.DialogFlow depending on which integration method you have chosen. + +* **ActionInvocationName** - replace "YOUR-ACTION-DISPLAY-NAME" with the display name you gave to your action. If using Actions on Google, this will be the name specified in your action package. If using DialogFlow, this is the display name you specified on the **Invocation** details page for your action. + +* **ActionProjectId** - You also need to replace "YOUR-PROJECT-ID" with the ID of your **Actions on Google** project. + +* **ValidateIncomingRequests** - If set to true, the adapter will use the **ActionProjectId** you have specified to validate that the request being receieved is from your action. Set this to false for testing purposes if you wish to send request from other sources. ```csharp // Create the Google Adapter @@ -206,6 +272,8 @@ using Microsoft.Bot.Builder; { ActionInvocationName = "YOUR-ACTION-DISPLAY-NAME", ActionProjectId = "YOUR-PROJECT-ID" + ValidateIncomingRequests = true, + WebhookType = GoogleWebhookType.Conversation // GoogleWebhookType.DialogFlow }; }); ``` @@ -230,6 +298,8 @@ public void ConfigureServices(IServiceCollection services) { ActionInvocationName = "YOUR-ACTION-DISPLAY-NAME", ActionProjectId = "YOUR-PROJECT-ID" + ValidateIncomingRequests = true, + WebhookType = GoogleWebhookType.Conversation // GoogleWebhookType.DialogFlow }; }); @@ -243,12 +313,11 @@ public void ConfigureServices(IServiceCollection services) ```cs using Bot.Builder.Community.Adapters.Google; ``` +### Complete configuration of your Google Action -### Complete configuration of your Action package - -Now that you have wired up the adapter in your bot project, the final steps are to configure the endpoint, in your action package, to which requests will be posted to when your action is invoked, pointing it to the correct endpoint on your bot. +Now that you have wired up the adapter in your bot project, the final steps are to configure the endpoint, for your action, to which requests will be posted to when your action is invoked, pointing it to the correct endpoint on your bot. -1. To complete this step, [deploy your bot to Azure](https://aka.ms/bot-builder-deploy-az-cli) and make a note of the URL to your deployed bot. Your Google messaging endpoint is the URL for your bot, which will be the URL of your deployed application (or ngrok endpoint), plus '/api/alexa' (for example, `https://yourbotapp.azurewebsites.net/api/Google`). +To complete this step, [deploy your bot to Azure](https://aka.ms/bot-builder-deploy-az-cli) and make a note of the URL to your deployed bot. Your Google messaging endpoint is the URL for your bot, which will be the URL of your deployed application (or ngrok endpoint), plus '/api/alexa' (for example, `https://yourbotapp.azurewebsites.net/api/Google`). > [!NOTE] > If you are not ready to deploy your bot to Azure, or wish to debug your bot when using the Alexa adapter, you can use a tool such as [ngrok](https://www.ngrok.com) (which you will likely already have installed if you have used the Bot Framework emulator previously) to tunnel through to your bot running locally and provide you with a publicly accessible URL for this. @@ -259,7 +328,9 @@ Now that you have wired up the adapter in your bot project, the final steps are > ngrok.exe http 3978 -host-header="localhost:3978" > ``` -2. Go back to the action package you created in the text editor and replace the URL for the conversation endpoint with your bot's Google endpoint, such as https://yourbotapp.azurewebsites.net/api/google. For example, the conversation section within your action package may look like this. +#### Complete configuration for Actions on Google + +1. Go back to the action package you created in the text editor and replace the URL for the conversation endpoint with your bot's Google endpoint, such as https://yourbotapp.azurewebsites.net/api/google. For example, the conversation section within your action package may look like this. ```json "conversations": { @@ -269,29 +340,53 @@ Now that you have wired up the adapter in your bot project, the final steps are } ``` -3. Save your completed action package in a location of your choice. +2. Save your completed action package in a location of your choice. -4. You now need to update your action using the **gactions** cli tool you downloaded earlier. Open a terminal and navigate to the location that you saved the **gactions** cli tool into earlier. You will now also require the command you made a note of earlier when creating your project. Enter this command into the terminal window, replacing **PACKAGE_NAME** with the location of your recently saved action package. Your command should look something like the following, +3. You now need to update your action using the **gactions** cli tool you downloaded earlier. Open a terminal and navigate to the location that you saved the **gactions** cli tool into earlier. You will now also require the command you made a note of earlier when creating your project. Enter this command into the terminal window, replacing **PACKAGE_NAME** with the location of your recently saved action package. Your command should look something like the following, ``` gactions update --action_package C:\your-action-package.json --project YOUR-PROJECT-ID ``` -5. Execute the command, following the instructions to authenticate with your Google account. Once completed +4. Execute the command, following the instructions to authenticate with your Google account. Once completed + +#### Complete configuration for DialogFlow +Within the DialogFlow portal, navigate to the **Fulfilment** tab on the left hand menu and set the **URL** property to your endpoint URL and click the **Save** button. -### Test your Google action + +### Testing your Google action You can now test interacting with your action using the simulator. -1. In the action dashboard navigate to the **Test** tab at the top of the page. +1. Navigate to https://console.actions.google.com/ and select your action. + +2. In the action dashboard navigate to the **Test** tab at the top of the page. -2. To perform a basic test enter "ask hello world" into the simulator input box. For example, if your action display name was 'Adapter Helper', you would type 'Talk to Adapter Helper hello world'. This should return an echo of your message. +3. To perform a basic test enter "ask hello world" into the simulator input box. For example, if your action display name was 'Adapter Helper', you would type 'Talk to Adapter Helper hello world'. This should return an echo of your message. ![Simulator](/libraries/Bot.Builder.Community.Adapters.Google/media/simulator-test.PNG?raw=true) Now that you have enabled testing for your action, you can also test your action using a physical Google assistant device or using Google assistant on an Android device. Providing you are logged into the device with the same account used to login to the Actions on Google Console (or an account that you have added as a beta tester for your action within the console). +### Incoming action requests to Bot Framework activity mapping + +The Google actions service can send your bot a number of different request types. + +* By default, incoming requests take the query text (the text / typed spoken by the user) and convert them to a Bot Framework Message Activity. + +* **Explicit invocation -> ConversationUpdateActivity** +If a user invokes your action without specifying an intent / further query (e.g. OK Google, talk to My Awesome Action - ***where 'My Awesome Action' is your action display / invocation name***), this will be to your bot as a ConversationUpdateActivity. This is mirrors the default functionality on Azure bot Service channels when a user starts a conversation. + +* **actions.intent.sign_in -> Event Activity** +If you are using Account Linking, after you send a request for a user to sign in (by attaching a Bot Framework SigninCard to the outgoing activity), you will receieve a repsonse which contains the status of the account linking (this is likely to be OK / ERROR / CANCELLED). Your bot will recieve an Event Activity where the Name is 'actions.intent.sign_in' an the Value is a string value representing the signin status. + +* **actions.intent.option -> Message Activity** +If you have sent the user a List or Carousel intent (using the helper intent attachments provided with the adapter), if the user selects a value from either the list or carousel, your bot will recieve a Message Activity where the Text property is set to the Display Text value for the selected item. + +* **actions.intent.XXXX -> Event Activity** +Any actions intent requests receieved in response to helper intents not explicitly handled by the adapter (i.e. intents other than option and sign_in), will be sent to your bot as an Event activity. The name property on the Event activity will be set to the full intent name (e.g. actions.intent.permissions), with the value set to the full request payload. + ### Customising your conversation #### Controlling the end of a session @@ -310,9 +405,11 @@ You can alter the default behavior to leave the session open and listen for furt { return new GoogleAdapterOptions() { + ShouldEndSessionByDefault = false, ActionInvocationName = "YOUR-ACTION-DISPLAY-NAME", - ActionProjectId = "YOUR-PROJECT-ID", - ShouldEndSessionByDefault = false + ActionProjectId = "YOUR-PROJECT-ID" + ValidateIncomingRequests = true, + WebhookType = GoogleWebhookType.Conversation // GoogleWebhookType.DialogFlow }; }); ``` @@ -341,56 +438,62 @@ To combat this issue the adapter will automatically concatenate multiple activit } ``` -#### Sending a basic Google card as part of your response +#### Automatic conversion of native Bot Framework card attachments + +* A Bot Framework HeroCard attached to an outgoing activity, will be automatically transformed into a Google Basic Card. + +* If you have enabled Account Linking for your action, then sending a Bot Framework Signin card on your outgoing activity will be translated into a Signin Helper Intent on the response to Google, which will trigger the appropriate Signin flow. + +#### Explicitly sending a basic Google card as part of your response You can include a basic Google card in your response, which is shown on devices that have a screen. To do this you include an attachment on your outgoing activity. For more information about basic cards see [https://developers.google.com/assistant/conversational/responses#basic_card](https://developers.google.com/assistant/conversational/responses#basic_card) ```cs -var activityWithCard = MessageFactory.Text($"Ok, I included a simple card."); - activityWithCard.Attachments.Add( - new BasicCardAttachment( - new Adapters.Google.BasicCard() - { - Content = new BasicCardContent() - { - - Title = "This is a simple card", - Subtitle = "This is a simple card subtitle", - FormattedText = "This is the simple card content" - } - })); - await turnContext.SendActivityAsync(activityWithCard, cancellationToken); + var activityWithCard = MessageFactory.Text($"Ok, I included a simple card."); + + var basicCard = GoogleCardFactory.CreateBasicCard("card title", "card subtitle", "some text for the content"); + activityWithCard.Attachments.Add(basicCard.ToAttachment()); + + await turnContext.SendActivityAsync(activityWithCard, cancellationToken); ``` #### Providing a user an interactive list / carousel -In order to provide a user with a list or carousel, from which they can choose an item using their screen, you can add a ListAttachment to your outgoing activity, setting the **ListAttachmentStyle** to determine if a List or Carousel should be used. +The following code shows how to provide a user with a list or carousel, using the provided GoogleHelperIntent factory to generate a list or carousel intent object, which can then be converted into an attachment and attached to your outgoing activity. More information about Lists and Carousels can be found at [https://developers.google.com/assistant/conversational/responses#visual_selection_responses](https://developers.google.com/assistant/conversational/responses#visual_selection_responses). Below shows an example of sending a list. ```cs -var activityWithListAttachment = MessageFactory.Text($"Ok, I included a list."); - var listAttachment = new ListAttachment( - "This is the list title", - new List() { - new OptionItem() { - Title = "List item 1", - Description = "This is the List Item 1 description", - Image = new OptionItemImage() { AccessibilityText = "Item 1 image", Url = "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.PNG"}, - OptionInfo = new OptionItemInfo() { Key = "Item1", Synonyms = new List(){ "first" } } - }, - new OptionItem() { - Title = "List item 2", - Description = "This is the List Item 2 description", - Image = new OptionItemImage() { AccessibilityText = "Item 1 image", Url = "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.PNG"}, - OptionInfo = new OptionItemInfo() { Key = "Item2", Synonyms = new List(){ "second" } } - } - }, - ListAttachmentStyle.List); - activityWithListAttachment.Attachments.Add(listAttachment); - await turnContext.SendActivityAsync(activityWithListAttachment, cancellationToken); + var activityWithListAttachment = MessageFactory.Text($"Ok, I included a list."); + + var listIntent = GoogleHelperIntentFactory.CreateListIntent( + "List title", + new List() + { + new OptionItem( + "List item 1", + "This is the List Item 1 description", + new OptionItemInfo() {Key = "Item1", Synonyms = new List() {"first"}}, + new OptionItemImage() + { + AccessibilityText = "Item 1 image", + Url = "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png" + }), + new OptionItem( + "List item 2", + "This is the List Item 2 description", + new OptionItemInfo() {Key = "Item2", Synonyms = new List() {"second"}}, + new OptionItemImage() + { + AccessibilityText = "Item 2 image", + Url = "https://storage.googleapis.com/actionsresources/logo_assistant_2x_64dp.png" + }) + }); + activityWithListAttachment.Attachments.Add(listIntent.ToAttachment()); + + await turnContext.SendActivityAsync(activityWithListAttachment, cancellationToken); ``` #### Sending a table card @@ -398,36 +501,34 @@ var activityWithListAttachment = MessageFactory.Text($"Ok, I included a list."); You can include information formatted into a table using the Table Card. See [https://developers.google.com/assistant/conversational/responses#table_cards](https://developers.google.com/assistant/conversational/responses#basic_card) for more information about Table Cards. ```cs -var activityWithTableCardAttachment = MessageFactory.Text($"Ok, I included a table card."); - var tableCardAttachment = new TableCardAttachment( - new TableCard() - { - Content = new TableCardContent() - { - ColumnProperties = new List() - { - new ColumnProperties() { Header = "Column 1" }, - new ColumnProperties() { Header = "Column 2" } - }, - Rows = new List() - { - new Row() { - Cells = new List - { - new Cell { Text = "Row 1, Item 1" }, - new Cell { Text = "Row 1, Item 2" } - } - }, - new Row() { - Cells = new List - { - new Cell { Text = "Row 2, Item 1" }, - new Cell { Text = "Row 2, Item 2" } - } - } - } - } - }); - activityWithTableCardAttachment.Attachments.Add(tableCardAttachment); - await turnContext.SendActivityAsync(activityWithTableCardAttachment, cancellationToken); + var activityWithTableCardAttachment = MessageFactory.Text($"Ok, I included a table card."); + + var tableCard = GoogleCardFactory.CreateTableCard( + new List() + { + new ColumnProperties() { Header = "Column 1" }, + new ColumnProperties() { Header = "Column 2" } + }, + new List() + { + new Row() { + Cells = new List + { + new Cell { Text = "Row 1, Item 1" }, + new Cell { Text = "Row 1, Item 2" } + } + }, + new Row() { + Cells = new List + { + new Cell { Text = "Row 2, Item 1" }, + new Cell { Text = "Row 2, Item 2" } + } + } + }, + "Table Card Title", + "Table card subtitle", + new List