diff --git a/Bot.Builder.Community.sln b/Bot.Builder.Community.sln index 5efb76de..be97ab57 100644 --- a/Bot.Builder.Community.sln +++ b/Bot.Builder.Community.sln @@ -1,398 +1,403 @@ - -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 + +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 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CommonTargets", "CommonTargets", "{F54D9F5A-7C10-4F2C-9CE6-4954F707DB53}" + ProjectSection(SolutionItems) = preProject + CommonTargets\library.shared.targets = CommonTargets\library.shared.targets + EndProjectSection +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 + {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 + {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 + 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} + {0F8ADFCE-3E91-4F85-BC0B-4B0A5C98797C} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + {6356EF6A-406B-4B2E-A229-C1D042C2FCF6} = {840D4038-9AB8-4750-9FFE-365386CE47E2} + {7856219A-3537-4F81-86A8-4CB020BD2B9A} = {BF310E8A-8DA1-441F-90E9-DE0E66553048} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9FE3B75E-BA2B-45BC-BBF0-DDA8BA10C4F0} + EndGlobalSection +EndGlobal diff --git a/CommonTargets/library.shared.targets b/CommonTargets/library.shared.targets new file mode 100644 index 00000000..ca5cb21a --- /dev/null +++ b/CommonTargets/library.shared.targets @@ -0,0 +1,7 @@ + + + + 4.9.2 + + + diff --git a/README.md b/README.md index 1836d05e..0995681c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Build Status](https://dev.azure.com/BotBuilder-Community/dotnet/_apis/build/status/BotBuilderCommunity.botbuilder-community-dotnet?branchName=master)](https://dev.azure.com/BotBuilder-Community/dotnet/_build/latest?definitionId=1&branchName=master) [![Bot Builder Community NuGet](https://img.shields.io/badge/NuGet-blue.svg)](https://www.nuget.org/profiles/BotBuilderCommunity) -**Latest release: v4.8.6 (15/04/2020) - [Release Notes](https://github.com/BotBuilderCommunity/botbuilder-community-dotnet/releases/tag/v4.8.6)** +**Latest release: v4.9 (02/06/2020) - [Release Notes](https://github.com/BotBuilderCommunity/botbuilder-community-dotnet/releases/tag/v4.9)** # Bot Builder Community - .NET Extensions diff --git a/libraries/Bot.Builder.Community.Adapters.Alexa.Core/AlexaRequestMapper.cs b/libraries/Bot.Builder.Community.Adapters.Alexa.Core/AlexaRequestMapper.cs index eed33213..87de4472 100644 --- a/libraries/Bot.Builder.Community.Adapters.Alexa.Core/AlexaRequestMapper.cs +++ b/libraries/Bot.Builder.Community.Adapters.Alexa.Core/AlexaRequestMapper.cs @@ -67,15 +67,15 @@ public Activity RequestToActivity(SkillRequest skillRequest) return RequestToEventActivity(skillRequest); } } - + /// /// Creates a SkillResponse based on an Activity and original SkillRequest. /// - /// The Activity to use to create the SkillResponse + /// The Merged Activity Result to use to create the SkillResponse /// Original SkillRequest received from Alexa Skills service. This is used /// to check if the original request was a SessionEndedRequest which should not return a response. /// SkillResponse - public SkillResponse ActivityToResponse(Activity activity, SkillRequest alexaRequest) + public SkillResponse ActivityToResponse(MergedActivityResult mergedActivityResult, SkillRequest alexaRequest) { var response = new SkillResponse() { @@ -83,6 +83,8 @@ public SkillResponse ActivityToResponse(Activity activity, SkillRequest alexaReq Response = new ResponseBody() }; + var activity = mergedActivityResult?.MergedActivity; + if (activity == null || activity.Type != ActivityTypes.Message || alexaRequest.Request is SessionEndedRequest) { response.Response.ShouldEndSession = true; @@ -106,18 +108,26 @@ public SkillResponse ActivityToResponse(Activity activity, SkillRequest alexaReq if (ShouldSetEndSession(response)) { - switch (activity.InputHint) + // If end of conversation was flagged use that, othwerwise look at the InputHint. + if (mergedActivityResult.EndOfConversationFlagged) { - case InputHints.IgnoringInput: - response.Response.ShouldEndSession = true; - break; - case InputHints.ExpectingInput: - response.Response.ShouldEndSession = false; - response.Response.Reprompt = new Reprompt(activity.Text); - break; - default: - response.Response.ShouldEndSession = _options.ShouldEndSessionByDefault; - break; + response.Response.ShouldEndSession = true; + } + else + { + switch (activity.InputHint) + { + case InputHints.IgnoringInput: + response.Response.ShouldEndSession = true; + break; + case InputHints.ExpectingInput: + response.Response.ShouldEndSession = false; + response.Response.Reprompt = new Reprompt(activity.Text); + break; + default: + response.Response.ShouldEndSession = _options.ShouldEndSessionByDefault; + break; + } } } @@ -133,36 +143,73 @@ public SkillResponse ActivityToResponse(Activity activity, SkillRequest alexaReq /// https://developer.amazon.com/en-US/docs/alexa/custom-skills/speech-synthesis-markup-language-ssml-reference.html#break /// /// The list of one or more outgoing activities - /// Activity - public Activity MergeActivities(IList activities) + /// MergedActivityResult + public MergedActivityResult MergeActivities(IList activities) { - var messageActivities = activities?.Where(a => a.Type == ActivityTypes.Message).ToList(); - - if (messageActivities == null || messageActivities.Count == 0) + if (activities == null || activities.Count == 0) { return null; } - var activity = messageActivities.Last(); + var mergedActivityResult = new MergedActivityResult(); - if (messageActivities.Any(a => !string.IsNullOrEmpty(a.Speak))) + bool hasSpeakField = false; + var speakFields = new List(); + var textFields = new List(); + var attachments = new List(); + foreach (var activity in activities) { - var speakText = string.Join("", messageActivities - .Select(a => !string.IsNullOrEmpty(a.Speak) ? StripSpeakTag(a.Speak) : NormalizeActivityText(a.TextFormat, a.Text, forSsml: true)) - .Where(s => !string.IsNullOrEmpty(s)) - .Select(s => s)); + if (activity == null) + { + continue; + } + + switch (activity.Type) + { + case ActivityTypes.Message: + mergedActivityResult.MergedActivity = activity; + if (!string.IsNullOrEmpty(activity.Speak)) + { + hasSpeakField = true; + speakFields.Add(StripSpeakTag(activity.Speak)); + } + else if (!string.IsNullOrEmpty(activity.Text)) + { + speakFields.Add(NormalizeActivityText(activity.TextFormat, activity.Text, forSsml: true)); + } + + if (!string.IsNullOrEmpty(activity.Text)) + { + var text = NormalizeActivityText(activity.TextFormat, activity.Text, forSsml: false); + if (!string.IsNullOrEmpty(text)) + { + textFields.Add(text.Trim(new char[] { ' ', '.' })); + } + } - activity.Speak = $"{speakText}"; + if (activity.Attachments != null && activity.Attachments.Count > 0) + { + attachments.AddRange(activity.Attachments); + } + break; + case ActivityTypes.EndOfConversation: + mergedActivityResult.EndOfConversationFlagged = true; + break; + } } - activity.Text = string.Join(". ", messageActivities - .Select(a => NormalizeActivityText(a.TextFormat, a.Text, forSsml: false)) - .Where(s => !string.IsNullOrEmpty(s)) - .Select(s => s.Trim(new char[] { ' ', '.' }))); + if (mergedActivityResult.MergedActivity != null) + { + if (hasSpeakField) + { + mergedActivityResult.MergedActivity.Speak = $"{string.Join("", speakFields)}"; + } - activity.Attachments = messageActivities.Where(x => x.Attachments != null).SelectMany(x => x.Attachments).ToList(); + mergedActivityResult.MergedActivity.Text = string.Join(". ", textFields); + mergedActivityResult.MergedActivity.Attachments = attachments; + } - return activity; + return mergedActivityResult; } private Activity RequestToEndOfConversationActivity(SkillRequest skillRequest) @@ -185,7 +232,6 @@ private Activity RequestToMessageActivity(SkillRequest skillRequest, IntentReque var activity = Activity.CreateMessageActivity() as Activity; activity = SetGeneralActivityProperties(activity, skillRequest); activity.Text = intentRequest.Intent.Slots[_options.DefaultIntentSlotName].Value; - activity.Locale = intentRequest.Locale; return activity; } @@ -249,6 +295,7 @@ private Activity SetGeneralActivityProperties(Activity activity, SkillRequest sk activity.Conversation = new ConversationAccount(isGroup: false, id: skillRequest.Session?.SessionId ?? skillRequest.Request.RequestId); activity.Timestamp = skillRequest.Request.Timestamp.ToUniversalTime(); activity.ChannelData = skillRequest; + activity.Locale = skillRequest.Request.Locale; return activity; } diff --git a/libraries/Bot.Builder.Community.Adapters.Alexa.Core/Bot.Builder.Community.Adapters.Alexa.Core.csproj b/libraries/Bot.Builder.Community.Adapters.Alexa.Core/Bot.Builder.Community.Adapters.Alexa.Core.csproj index 78dc7305..e02c053b 100644 --- a/libraries/Bot.Builder.Community.Adapters.Alexa.Core/Bot.Builder.Community.Adapters.Alexa.Core.csproj +++ b/libraries/Bot.Builder.Community.Adapters.Alexa.Core/Bot.Builder.Community.Adapters.Alexa.Core.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -22,8 +23,7 @@ - - + diff --git a/libraries/Bot.Builder.Community.Adapters.Alexa.Core/MergedActivityResult.cs b/libraries/Bot.Builder.Community.Adapters.Alexa.Core/MergedActivityResult.cs new file mode 100644 index 00000000..9258ef08 --- /dev/null +++ b/libraries/Bot.Builder.Community.Adapters.Alexa.Core/MergedActivityResult.cs @@ -0,0 +1,20 @@ +using Microsoft.Bot.Schema; + +namespace Bot.Builder.Community.Adapters.Alexa.Core +{ + /// + /// The result of merging a collection of Activities. + /// + public class MergedActivityResult + { + /// + /// The merged activity + /// + public Activity MergedActivity; + + /// + /// Is end of conversation flagged (outside of the properties in the merged activity itself) + /// + public bool EndOfConversationFlagged; + } +} diff --git a/libraries/Bot.Builder.Community.Adapters.Alexa/AlexaAdapter.cs b/libraries/Bot.Builder.Community.Adapters.Alexa/AlexaAdapter.cs index 3bd83cdf..9c65835d 100644 --- a/libraries/Bot.Builder.Community.Adapters.Alexa/AlexaAdapter.cs +++ b/libraries/Bot.Builder.Community.Adapters.Alexa/AlexaAdapter.cs @@ -155,7 +155,7 @@ private async Task ProcessAlexaRequestAsync(SkillRequest alexaReq return response; } - public virtual Activity ProcessOutgoingActivities(List activities) + public virtual MergedActivityResult ProcessOutgoingActivities(List activities) { return _requestMapper.MergeActivities(activities); } diff --git a/libraries/Bot.Builder.Community.Adapters.Alexa/Bot.Builder.Community.Adapters.Alexa.csproj b/libraries/Bot.Builder.Community.Adapters.Alexa/Bot.Builder.Community.Adapters.Alexa.csproj index bb69a6bd..2001e61a 100644 --- a/libraries/Bot.Builder.Community.Adapters.Alexa/Bot.Builder.Community.Adapters.Alexa.csproj +++ b/libraries/Bot.Builder.Community.Adapters.Alexa/Bot.Builder.Community.Adapters.Alexa.csproj @@ -1,4 +1,5 @@  + netstandard2.0 @@ -20,7 +21,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/AttachmentHelper.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/AttachmentHelper.cs index fe30745b..31b074a5 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/AttachmentHelper.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/AttachmentHelper.cs @@ -41,6 +41,9 @@ public static void ConvertAttachmentContent(this Activity activity) case GoogleAttachmentContentTypes.TableCard: Convert(attachment); break; + case GoogleAttachmentContentTypes.BrowsingCarousel: + Convert(attachment); + break; case GoogleAttachmentContentTypes.CarouselIntent: Convert(attachment); break; @@ -59,6 +62,12 @@ public static void ConvertAttachmentContent(this Activity activity) case GoogleAttachmentContentTypes.ConfirmationIntent: Convert(attachment); break; + case GoogleAttachmentContentTypes.NewSurfaceIntent: + Convert(attachment); + break; + case GoogleAttachmentContentTypes.SigninIntent: + Convert(attachment); + break; } } } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/Extensions.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/Extensions.cs index f65c0182..56aacba7 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/Extensions.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/Extensions.cs @@ -22,6 +22,8 @@ public static Attachment ToAttachment(this ResponseItem responseItem) return CreateAttachment(mediaResponse, GoogleAttachmentContentTypes.MediaResponse); case BasicCard basicCard: return CreateAttachment(basicCard, GoogleAttachmentContentTypes.BasicCard); + case BrowsingCarousel browsingCarousel: + return CreateAttachment(browsingCarousel, GoogleAttachmentContentTypes.BrowsingCarousel); default: return null; } @@ -43,6 +45,8 @@ public static Attachment ToAttachment(this SystemIntent intent) return CreateAttachment(permissionsIntent, GoogleAttachmentContentTypes.PermissionsIntent); case PlaceLocationIntent placeLocationIntent: return CreateAttachment(placeLocationIntent, GoogleAttachmentContentTypes.PlaceLocationIntent); + case NewSurfaceIntent newSurfaceIntent: + return CreateAttachment(newSurfaceIntent, GoogleAttachmentContentTypes.NewSurfaceIntent); default: return null; } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/GoogleAttachmentContentTypes.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/GoogleAttachmentContentTypes.cs index 1a6c674a..f865eea0 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/GoogleAttachmentContentTypes.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Attachments/GoogleAttachmentContentTypes.cs @@ -16,5 +16,7 @@ public static class GoogleAttachmentContentTypes public const string CarouselIntent = "application/vhd.bfgoogle.carousel"; public const string DateTimeIntent = "application/vhd.bfgoogle.datetime"; public const string ConfirmationIntent = "application/vhd.bfgoogle.confirm"; + public const string NewSurfaceIntent = "application/vhd.bfgoogle.newsurface"; + public const string BrowsingCarousel = "application/vhd.bfgoogle.browsingcarousel"; } } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Bot.Builder.Community.Adapters.Google.Core.csproj b/libraries/Bot.Builder.Community.Adapters.Google.Core/Bot.Builder.Community.Adapters.Google.Core.csproj index 6b2ddb56..84b62286 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/Bot.Builder.Community.Adapters.Google.Core.csproj +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Bot.Builder.Community.Adapters.Google.Core.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -7,7 +8,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleRequestMapperBase.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleRequestMapperBase.cs index da4ad9f2..45eb1832 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleRequestMapperBase.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleRequestMapperBase.cs @@ -144,6 +144,18 @@ public ProcessHelperIntentAttachmentsResult ProcessHelperIntentAttachments(Activ }; } + if (activity?.Attachments?.FirstOrDefault(a => + a.ContentType == GoogleAttachmentContentTypes.NewSurfaceIntent) != null) + { + return new ProcessHelperIntentAttachmentsResult() + { + Intent = ProcessSystemIntentAttachment( + GoogleAttachmentContentTypes.NewSurfaceIntent, + activity), + AllowAdditionalInputPrompt = true + }; + } + return new ProcessHelperIntentAttachmentsResult() { Intent = null @@ -182,6 +194,10 @@ public List GetResponseItemsFromActivityAttachments(Activity activ if (mediaItem != null) responseItems.Add(mediaItem); + var browsingCarousel = ProcessResponseItemAttachment(GoogleAttachmentContentTypes.BrowsingCarousel, activity); + if (browsingCarousel != null) + responseItems.Add(browsingCarousel); + return responseItems; } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Helpers/GoogleCardFactory.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Helpers/GoogleCardFactory.cs index 550a6eb6..52a74dff 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/Helpers/GoogleCardFactory.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Helpers/GoogleCardFactory.cs @@ -18,7 +18,7 @@ public static BasicCard CreateBasicCard(string title, string subtitle, string fo Title = title, Subtitle = subtitle, FormattedText = formattedText, - Buttons = buttons.ToArray(), + Buttons = buttons?.ToArray(), Image = image, Display = displayOptions } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Request/ConversationWebhookRequestSchema.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Request/ConversationWebhookRequestSchema.cs index d39f59dd..764ccde6 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Request/ConversationWebhookRequestSchema.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Request/ConversationWebhookRequestSchema.cs @@ -10,10 +10,16 @@ public class ConversationRequest public Surface Surface { get; set; } public Input[] Inputs { get; set; } public User User { get; set; } + public Device Device { get; set; } public Conversation Conversation { get; set; } public AvailableSurface[] AvailableSurfaces { get; set; } } + public class Device + { + public Location Location { get; set; } + } + public class Surface { public Capability[] Capabilities { get; set; } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/BrowsingCarousel.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/BrowsingCarousel.cs new file mode 100644 index 00000000..09462185 --- /dev/null +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/BrowsingCarousel.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Bot.Builder.Community.Adapters.Google.Core.Model.Response +{ + public class BrowsingCarousel : ResponseItem + { + [JsonProperty(PropertyName = "carouselBrowse")] + public BrowsingCarouselContent Content { get; set; } + } + + public class BrowsingCarouselContent + { + public List Items { get; set; } = new List(); + } + + public class BrowsingCarouselItem + { + public string Title { get; set; } + + public Image Image { get; set; } + + public OpenUrlAction OpenUrlAction { get; set; } + + public string Description { get; set; } + + public string Footer { get; set; } + } +} diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/SystemIntents/NewSurfaceIntent.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/SystemIntents/NewSurfaceIntent.cs new file mode 100644 index 00000000..b4c979d8 --- /dev/null +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/SystemIntents/NewSurfaceIntent.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using System.Linq; +using Bot.Builder.Community.Adapters.Google.Core.Model.Request; +using Newtonsoft.Json; + +namespace Bot.Builder.Community.Adapters.Google.Core.Model.SystemIntents +{ + public class NewSurfaceIntent : SystemIntent + { + public NewSurfaceIntent() + { + Intent = "actions.intent.NEW_SURFACE"; + } + + public NewSurfaceInputValueData InputValueData { get; set; } + } + + public class NewSurfaceInputValueData : IntentInputValueData + { + public NewSurfaceInputValueData() + { + Type = "type.googleapis.com/google.actions.v2.NewSurfaceValueSpec"; + } + + public List Capabilities { get; } = new List(); + + public string Context { get; set; } + + public string NotificationTitle { get; set; } + } +} \ No newline at end of file diff --git a/libraries/Bot.Builder.Community.Adapters.Google/Bot.Builder.Community.Adapters.Google.csproj b/libraries/Bot.Builder.Community.Adapters.Google/Bot.Builder.Community.Adapters.Google.csproj index be090391..ac4abb07 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google/Bot.Builder.Community.Adapters.Google.csproj +++ b/libraries/Bot.Builder.Community.Adapters.Google/Bot.Builder.Community.Adapters.Google.csproj @@ -1,4 +1,5 @@  + netstandard2.0 @@ -16,8 +17,7 @@ - - + diff --git a/libraries/Bot.Builder.Community.Adapters.Infobip/Bot.Builder.Community.Adapters.Infobip.csproj b/libraries/Bot.Builder.Community.Adapters.Infobip/Bot.Builder.Community.Adapters.Infobip.csproj index 1dbfec19..a5131689 100644 --- a/libraries/Bot.Builder.Community.Adapters.Infobip/Bot.Builder.Community.Adapters.Infobip.csproj +++ b/libraries/Bot.Builder.Community.Adapters.Infobip/Bot.Builder.Community.Adapters.Infobip.csproj @@ -1,4 +1,5 @@  + netstandard2.0 @@ -21,8 +22,7 @@ - - + diff --git a/libraries/Bot.Builder.Community.Adapters.RingCentral/Bot.Builder.Community.Adapters.RingCentral.csproj b/libraries/Bot.Builder.Community.Adapters.RingCentral/Bot.Builder.Community.Adapters.RingCentral.csproj index 04a20c32..6f9b5e13 100644 --- a/libraries/Bot.Builder.Community.Adapters.RingCentral/Bot.Builder.Community.Adapters.RingCentral.csproj +++ b/libraries/Bot.Builder.Community.Adapters.RingCentral/Bot.Builder.Community.Adapters.RingCentral.csproj @@ -1,4 +1,5 @@  + netcoreapp3.1 @@ -19,8 +20,7 @@ - - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/libraries/Bot.Builder.Community.Adapters.RingCentral/Handoff/StaticHandoffRequestRecognizer.cs b/libraries/Bot.Builder.Community.Adapters.RingCentral/Handoff/StaticHandoffRequestRecognizer.cs index fc1f7aca..7ae2c8a1 100644 --- a/libraries/Bot.Builder.Community.Adapters.RingCentral/Handoff/StaticHandoffRequestRecognizer.cs +++ b/libraries/Bot.Builder.Community.Adapters.RingCentral/Handoff/StaticHandoffRequestRecognizer.cs @@ -26,15 +26,15 @@ public async Task RecognizeHandoffRequestAsync(Activity activity) if (botRequested) { - return await Task.FromResult(HandoffTarget.Bot); + return await Task.FromResult(HandoffTarget.Bot).ConfigureAwait(false); } if (agentRequested) { - return await Task.FromResult(HandoffTarget.Agent); + return await Task.FromResult(HandoffTarget.Agent).ConfigureAwait(false); } - return await Task.FromResult(HandoffTarget.None); + return await Task.FromResult(HandoffTarget.None).ConfigureAwait(false); } } } diff --git a/libraries/Bot.Builder.Community.Adapters.RingCentral/Middleware/ActivityPublishingMiddleware.cs b/libraries/Bot.Builder.Community.Adapters.RingCentral/Middleware/ActivityPublishingMiddleware.cs index 7722736b..09bb91bf 100644 --- a/libraries/Bot.Builder.Community.Adapters.RingCentral/Middleware/ActivityPublishingMiddleware.cs +++ b/libraries/Bot.Builder.Community.Adapters.RingCentral/Middleware/ActivityPublishingMiddleware.cs @@ -58,19 +58,19 @@ public async Task OnTurnAsync(ITurnContext turnContext, NextDelegate next, Cance if (turnContext.Activity.Type == ActivityTypes.Message && !isFromRingCentral) { - await _ringCentralClient.SendActivityToRingCentralAsync(turnContext.Activity); + await _ringCentralClient.SendActivityToRingCentralAsync(turnContext.Activity).ConfigureAwait(false); - var handoffRequestState = await _handoffRequestRecognizer.RecognizeHandoffRequestAsync(turnContext.Activity); + var handoffRequestState = await _handoffRequestRecognizer.RecognizeHandoffRequestAsync(turnContext.Activity).ConfigureAwait(false); if (handoffRequestState != HandoffTarget.None) { string foreignThreadId = RingCentralSdkHelper.BuildForeignThreadIdFromActivity(turnContext.Activity); - var thread = await _ringCentralClient.GetThreadByForeignThreadIdAsync(foreignThreadId); + var thread = await _ringCentralClient.GetThreadByForeignThreadIdAsync(foreignThreadId).ConfigureAwait(false); if (thread != null) { - await _ringCentralClient.HandoffConversationControlToAsync(handoffRequestState, thread); - await turnContext.SendActivityAsync($"Transfer to {handoffRequestState.ToString()} has been initiated."); + await _ringCentralClient.HandoffConversationControlToAsync(handoffRequestState, thread).ConfigureAwait(false); + await turnContext.SendActivityAsync($"Transfer to {handoffRequestState.ToString()} has been initiated.").ConfigureAwait(false); if (handoffRequestState == HandoffTarget.Bot) { @@ -107,7 +107,7 @@ private async Task SendActivitiesToUserHook(ITurnContext tur // Send out messages from the bot to RingCentral if (activity.Type == ActivityTypes.Message) { - await _ringCentralClient.SendActivityToRingCentralAsync(activity); + await _ringCentralClient.SendActivityToRingCentralAsync(activity).ConfigureAwait(false); } } return responses; diff --git a/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralAdapter.cs b/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralAdapter.cs index 8218fa2f..449625e7 100644 --- a/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralAdapter.cs +++ b/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralAdapter.cs @@ -62,7 +62,7 @@ public override async Task SendActivitiesAsync(ITurnContext var hasChannelData = turnContext.Activity.TryGetChannelData(out var channelData); if (hasChannelData) { - var resourceId = await _ringCentralClient.SendContentToRingCentralAsync(activity, channelData.SourceId); + var resourceId = await _ringCentralClient.SendContentToRingCentralAsync(activity, channelData.SourceId).ConfigureAwait(false); responses.Add(new ResourceResponse() { Id = resourceId }); } else @@ -114,13 +114,13 @@ public async Task ProcessAsync( } else { - (ringCentralRequestType, activity) = await _ringCentralClient.GetActivityFromRingCentralRequestAsync(this, _botAdapter, httpRequest, httpResponse); + (ringCentralRequestType, activity) = await _ringCentralClient.GetActivityFromRingCentralRequestAsync(this, _botAdapter, httpRequest, httpResponse).ConfigureAwait(false); } switch (ringCentralRequestType) { case RingCentralHandledEvent.VerifyWebhook: - await _ringCentralClient.VerifyWebhookAsync(httpRequest, httpResponse, cancellationToken); + await _ringCentralClient.VerifyWebhookAsync(httpRequest, httpResponse, cancellationToken).ConfigureAwait(false); break; case RingCentralHandledEvent.Intervention: case RingCentralHandledEvent.Action: @@ -138,18 +138,18 @@ public async Task ProcessAsync( // Process messages created by any subscribed RingCentral source configured using a Webhook if (activity != null) { - var handoffRequestStatus = await _handoffRequestRecognizer.RecognizeHandoffRequestAsync(activity); + var handoffRequestStatus = await _handoffRequestRecognizer.RecognizeHandoffRequestAsync(activity).ConfigureAwait(false); // Bot or Agent request -> Re-Categorize if (handoffRequestStatus != HandoffTarget.None) { var channelData = activity.GetChannelData(); var threadId = channelData.ThreadId; - var thread = await _ringCentralClient.GetThreadByIdAsync(threadId); + var thread = await _ringCentralClient.GetThreadByIdAsync(threadId).ConfigureAwait(false); if (thread != null) { - await _ringCentralClient.HandoffConversationControlToAsync(handoffRequestStatus, thread); + await _ringCentralClient.HandoffConversationControlToAsync(handoffRequestStatus, thread).ConfigureAwait(false); } else { diff --git a/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralClientWrapper.cs b/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralClientWrapper.cs index 2fb81462..9f4e7965 100644 --- a/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralClientWrapper.cs +++ b/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralClientWrapper.cs @@ -148,7 +148,7 @@ public async Task> GetActivityFromRingC _ = request ?? throw new ArgumentNullException(nameof(request)); _ = response ?? throw new ArgumentNullException(nameof(response)); - var payloadType = await GetTypedRingCentralPayloadAsync(request.Body); + var payloadType = await GetTypedRingCentralPayloadAsync(request.Body).ConfigureAwait(false); switch (payloadType) { @@ -157,14 +157,14 @@ public async Task> GetActivityFromRingC var metadata = ringCentralEngageEvent.Events.FirstOrDefault()?.Resource?.Metadata; if (ringCentralEngageEvent.Events.FirstOrDefault().Type.Equals(RingCentralEventDescription.ContentImported, StringComparison.InvariantCultureIgnoreCase)) { - var newMessageActivity = await GetActivityFromRingCentralEventAsync(ringCentralEngageEvent, response); + var newMessageActivity = await GetActivityFromRingCentralEventAsync(ringCentralEngageEvent, response).ConfigureAwait(false); if (newMessageActivity == null) { break; } - var handoffRequestStatus = await _handoffRequestRecognizer.RecognizeHandoffRequestAsync(newMessageActivity); + var handoffRequestStatus = await _handoffRequestRecognizer.RecognizeHandoffRequestAsync(newMessageActivity).ConfigureAwait(false); // Bot requsted or bot in charge (not agent), return an activity if (handoffRequestStatus == HandoffTarget.Bot @@ -193,8 +193,8 @@ public async Task> GetActivityFromRingC async (ITurnContext turnContext, CancellationToken cancellationToken) => { MicrosoftAppCredentials.TrustServiceUrl(conversationRef.ServiceUrl); - await turnContext.SendActivityAsync(humanActivity); - }, default); + await turnContext.SendActivityAsync(humanActivity).ConfigureAwait(false); + }, default).ConfigureAwait(false); object res = new { @@ -204,7 +204,7 @@ public async Task> GetActivityFromRingC var rbody = JsonSerializer.Serialize(res); response.StatusCode = (int)HttpStatusCode.OK; - await response.WriteAsync(rbody); + await response.WriteAsync(rbody).ConfigureAwait(false); return new Tuple(RingCentralHandledEvent.Action, humanActivity); } @@ -308,7 +308,7 @@ public async Task SendActivityToRingCentralAsync(Activity activity) // Use RingCentral Client Source SDK as we need to pass the specific actions above // to allow an operator to take over the conversations - await _ringCentralClient.SendAsync(request); + await _ringCentralClient.SendAsync(request).ConfigureAwait(false); } /// @@ -337,7 +337,7 @@ public virtual async Task SendContentToRingCentralAsync(Activity activit body: activity.Text, sourceId: sourceId, _private: 1, - inReplyToId: activity.From.Id); + inReplyToId: activity.From.Id).ConfigureAwait(false); return content.Id; } @@ -395,7 +395,7 @@ public async Task HandoffConversationControlToAsync(HandoffTarget target, rcMode var threadsApi = GetThreadsApi(); await threadsApi.CategorizeThreadAsyncWithHttpInfo( thread.Id, - new Collection(mergedCategoryIds)); + new Collection(mergedCategoryIds)).ConfigureAwait(false); } public async Task GetThreadByIdAsync(string threadId) @@ -404,7 +404,7 @@ await threadsApi.CategorizeThreadAsyncWithHttpInfo( var threadsApi = GetThreadsApi(); - var thread = await threadsApi.GetThreadAsync(threadId); + var thread = await threadsApi.GetThreadAsync(threadId).ConfigureAwait(false); if (thread == null) { @@ -419,7 +419,7 @@ await threadsApi.CategorizeThreadAsyncWithHttpInfo( { var threadsApi = GetThreadsApi(); - var matchingThreads = await threadsApi.GetAllThreadsAsync($"foreign_id:'{foreignThreadId}'"); + var matchingThreads = await threadsApi.GetAllThreadsAsync($"foreign_id:'{foreignThreadId}'").ConfigureAwait(false); var thread = matchingThreads.Records.FirstOrDefault(); if (thread == null) @@ -501,7 +501,7 @@ public async Task GetActivityFromRingCentralEventAsync(RingCentralEnga var rcResponseBody = JsonSerializer.Serialize(rcResponse); response.StatusCode = (int)HttpStatusCode.OK; - await response.WriteAsync(rcResponseBody); + await response.WriteAsync(rcResponseBody).ConfigureAwait(false); return ringCentralActivity; } @@ -517,7 +517,7 @@ private async Task GetTypedRingCentralPayloadAsync(Stream pa _ = payload ?? throw new ArgumentNullException(nameof(payload)); using var ms = new MemoryStream(); - await payload.CopyToAsync(ms); + await payload.CopyToAsync(ms).ConfigureAwait(false); ms.Position = 0; if (ms.Length == 0) { diff --git a/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralConstants.cs b/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralConstants.cs index bf38a1bc..b2306bd6 100644 --- a/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralConstants.cs +++ b/libraries/Bot.Builder.Community.Adapters.RingCentral/RingCentralConstants.cs @@ -1,6 +1,6 @@ namespace Bot.Builder.Community.Adapters.RingCentral { - public class RingCentralConstants + public static class RingCentralConstants { // Webhook validation request from RingCentral will contain this in querystring public const string HubModeSubscribe = "subscribe"; diff --git a/libraries/Bot.Builder.Community.Adapters.Twitter/Bot.Builder.Community.Adapters.Twitter.csproj b/libraries/Bot.Builder.Community.Adapters.Twitter/Bot.Builder.Community.Adapters.Twitter.csproj index 915669fb..810866dd 100644 --- a/libraries/Bot.Builder.Community.Adapters.Twitter/Bot.Builder.Community.Adapters.Twitter.csproj +++ b/libraries/Bot.Builder.Community.Adapters.Twitter/Bot.Builder.Community.Adapters.Twitter.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -26,7 +27,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Adapters.Zoom/Bot.Builder.Community.Adapters.Zoom.csproj b/libraries/Bot.Builder.Community.Adapters.Zoom/Bot.Builder.Community.Adapters.Zoom.csproj index aeedd448..8548c0be 100644 --- a/libraries/Bot.Builder.Community.Adapters.Zoom/Bot.Builder.Community.Adapters.Zoom.csproj +++ b/libraries/Bot.Builder.Community.Adapters.Zoom/Bot.Builder.Community.Adapters.Zoom.csproj @@ -1,4 +1,5 @@  + netstandard2.0 @@ -20,8 +21,7 @@ - - + diff --git a/libraries/Bot.Builder.Community.Dialogs.Adaptive.Rest/Bot.Builder.Community.Dialogs.Adaptive.Rest.csproj b/libraries/Bot.Builder.Community.Dialogs.Adaptive.Rest/Bot.Builder.Community.Dialogs.Adaptive.Rest.csproj index 03b0e5f6..b4b0d2f3 100644 --- a/libraries/Bot.Builder.Community.Dialogs.Adaptive.Rest/Bot.Builder.Community.Dialogs.Adaptive.Rest.csproj +++ b/libraries/Bot.Builder.Community.Dialogs.Adaptive.Rest/Bot.Builder.Community.Dialogs.Adaptive.Rest.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -17,7 +18,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Dialogs.ChoiceFlow/Bot.Builder.Community.Dialogs.ChoiceFlow.csproj b/libraries/Bot.Builder.Community.Dialogs.ChoiceFlow/Bot.Builder.Community.Dialogs.ChoiceFlow.csproj index b542fbe0..4b1cd40c 100644 --- a/libraries/Bot.Builder.Community.Dialogs.ChoiceFlow/Bot.Builder.Community.Dialogs.ChoiceFlow.csproj +++ b/libraries/Bot.Builder.Community.Dialogs.ChoiceFlow/Bot.Builder.Community.Dialogs.ChoiceFlow.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -15,7 +16,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Dialogs.DataTypeDisambiguation/Bot.Builder.Community.Dialogs.DataTypeDisambiguation.csproj b/libraries/Bot.Builder.Community.Dialogs.DataTypeDisambiguation/Bot.Builder.Community.Dialogs.DataTypeDisambiguation.csproj index f38a1c2d..1d4ffd25 100644 --- a/libraries/Bot.Builder.Community.Dialogs.DataTypeDisambiguation/Bot.Builder.Community.Dialogs.DataTypeDisambiguation.csproj +++ b/libraries/Bot.Builder.Community.Dialogs.DataTypeDisambiguation/Bot.Builder.Community.Dialogs.DataTypeDisambiguation.csproj @@ -1,4 +1,5 @@  + netstandard2.0 @@ -11,8 +12,7 @@ - - + diff --git a/libraries/Bot.Builder.Community.Dialogs.FormFlow/Advanced/Field.cs b/libraries/Bot.Builder.Community.Dialogs.FormFlow/Advanced/Field.cs index 1ab1f621..04eee317 100644 --- a/libraries/Bot.Builder.Community.Dialogs.FormFlow/Advanced/Field.cs +++ b/libraries/Bot.Builder.Community.Dialogs.FormFlow/Advanced/Field.cs @@ -616,7 +616,7 @@ public Field SetPattern(string pattern) { _pattern = pattern; var regex = new Regex(pattern, RegexOptions.Compiled); - _validate = async (T state, object value) => + _validate = (T state, object value) => { var result = new ValidateResult { Value = value }; if (value == null) @@ -632,7 +632,7 @@ public Field SetPattern(string pattern) { result.Feedback = new Prompter(Template(TemplateUsage.NotUnderstood), _form, null).Prompt(state, this, value).Prompt; } - return result; + return Task.FromResult(result); }; return this; } @@ -781,7 +781,7 @@ protected void AddTemplate(TemplateAttribute template) protected FieldRole _role; protected ActiveDelegate _condition = new ActiveDelegate((state) => true); protected DefineAsyncDelegate _define = null; - protected ValidateAsyncDelegate _validate = new ValidateAsyncDelegate(async (state, value) => new ValidateResult { IsValid = true, Value = value }); + protected ValidateAsyncDelegate _validate = new ValidateAsyncDelegate(async (state, value) => await Task.FromResult(new ValidateResult { IsValid = true, Value = value })); protected NextDelegate _next = new NextDelegate((value, state) => new NextStep()); protected double _min, _max; protected bool _limited; diff --git a/libraries/Bot.Builder.Community.Dialogs.FormFlow/Advanced/Steps.cs b/libraries/Bot.Builder.Community.Dialogs.FormFlow/Advanced/Steps.cs index 576df01a..3125f9ec 100644 --- a/libraries/Bot.Builder.Community.Dialogs.FormFlow/Advanced/Steps.cs +++ b/libraries/Bot.Builder.Community.Dialogs.FormFlow/Advanced/Steps.cs @@ -613,13 +613,13 @@ public FormPrompt NotUnderstood(DialogContext context, T state, FormState form, return prompter.Prompt(state, _field, MessageActivityHelper.GetSanitizedTextInput(input)); } - public async Task ProcessAsync(DialogContext context, T state, FormState form, IMessageActivity input, IEnumerable matches) + public Task ProcessAsync(DialogContext context, T state, FormState form, IMessageActivity input, IEnumerable matches) { var value = matches.First().Value; form.StepState = null; form.SetPhase((bool)value ? StepPhase.Completed : StepPhase.Ready); var next = _field.Next(value, state); - return new StepResult(true, next, feedback: null, prompt: null); + return Task.FromResult(new StepResult(true, next, feedback: null, prompt: null)); } public async Task DefineAsync(T state) @@ -759,7 +759,7 @@ public FormPrompt NotUnderstood(DialogContext context, T state, FormState form, return new Prompter(template, _field.Form, _field.Prompt.Recognizer, _fields).Prompt(state, _field, MessageActivityHelper.GetSanitizedTextInput(input)); } - public async Task ProcessAsync(DialogContext context, T state, FormState form, IMessageActivity input, IEnumerable matches) + public Task ProcessAsync(DialogContext context, T state, FormState form, IMessageActivity input, IEnumerable matches) { NextStep next; form.Next = null; @@ -772,7 +772,7 @@ public async Task ProcessAsync(DialogContext context, T state, FormS { next = new NextStep(new string[] { (string)val }); } - return new StepResult(true, next, feedback: null, prompt: null); + return Task.FromResult(new StepResult(true, next, feedback: null, prompt: null)); } public Task DefineAsync(T state) diff --git a/libraries/Bot.Builder.Community.Dialogs.FormFlow/Bot.Builder.Community.Dialogs.FormFlow.csproj b/libraries/Bot.Builder.Community.Dialogs.FormFlow/Bot.Builder.Community.Dialogs.FormFlow.csproj index aac13c9e..7b5fe1e5 100644 --- a/libraries/Bot.Builder.Community.Dialogs.FormFlow/Bot.Builder.Community.Dialogs.FormFlow.csproj +++ b/libraries/Bot.Builder.Community.Dialogs.FormFlow/Bot.Builder.Community.Dialogs.FormFlow.csproj @@ -1,4 +1,6 @@  + + 4.0.0-local $(PackageVersion) @@ -40,8 +42,7 @@ - - + diff --git a/libraries/Bot.Builder.Community.Dialogs.Location/Bot.Builder.Community.Dialogs.Location.csproj b/libraries/Bot.Builder.Community.Dialogs.Location/Bot.Builder.Community.Dialogs.Location.csproj index 26213fcf..723c2e3c 100644 --- a/libraries/Bot.Builder.Community.Dialogs.Location/Bot.Builder.Community.Dialogs.Location.csproj +++ b/libraries/Bot.Builder.Community.Dialogs.Location/Bot.Builder.Community.Dialogs.Location.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -16,8 +17,7 @@ - - + diff --git a/libraries/Bot.Builder.Community.Dialogs.Location/LocationDialog.cs b/libraries/Bot.Builder.Community.Dialogs.Location/LocationDialog.cs index c76f81c2..d3607f95 100644 --- a/libraries/Bot.Builder.Community.Dialogs.Location/LocationDialog.cs +++ b/libraries/Bot.Builder.Community.Dialogs.Location/LocationDialog.cs @@ -59,16 +59,20 @@ public LocationDialog( LocationResourceManager resourceManager = null) : base(dialogId) { resourceManager = resourceManager ?? new LocationResourceManager(); + FavoritesManager favoritesManager = null; - if (!options.HasFlag(LocationOptions.SkipFavorites) && state == null) + if (!options.HasFlag(LocationOptions.SkipFavorites)) { - throw new ArgumentNullException(nameof(state), - "If LocationOptions.SkipFavorites is not used then BotState object must be " + - "provided to allow for storing / retrieval of favorites"); - } + if (state == null) + { + throw new ArgumentNullException(nameof(state), + "If LocationOptions.SkipFavorites is not used then BotState object must be " + + "provided to allow for storing / retrieval of favorites"); + } - var favoriteLocations = state.CreateProperty>($"{nameof(LocationDialog)}.Favorites"); - var favoritesManager = new FavoritesManager(favoriteLocations); + var favoriteLocations = state.CreateProperty>($"{nameof(LocationDialog)}.Favorites"); + favoritesManager = new FavoritesManager(favoriteLocations); + } IGeoSpatialService geoSpatialService; if (useAzureMaps) diff --git a/libraries/Bot.Builder.Community.Dialogs.Luis/Bot.Builder.Community.Dialogs.Luis.csproj b/libraries/Bot.Builder.Community.Dialogs.Luis/Bot.Builder.Community.Dialogs.Luis.csproj index 421753e9..a58e2c06 100644 --- a/libraries/Bot.Builder.Community.Dialogs.Luis/Bot.Builder.Community.Dialogs.Luis.csproj +++ b/libraries/Bot.Builder.Community.Dialogs.Luis/Bot.Builder.Community.Dialogs.Luis.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -15,7 +16,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Dialogs.Prompts/Bot.Builder.Community.Dialogs.Prompts.csproj b/libraries/Bot.Builder.Community.Dialogs.Prompts/Bot.Builder.Community.Dialogs.Prompts.csproj index d127c2b6..33104168 100644 --- a/libraries/Bot.Builder.Community.Dialogs.Prompts/Bot.Builder.Community.Dialogs.Prompts.csproj +++ b/libraries/Bot.Builder.Community.Dialogs.Prompts/Bot.Builder.Community.Dialogs.Prompts.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -15,7 +16,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Middleware.AzureAdAuthentication/Bot.Builder.Community.Middleware.AzureAdAuthentication.csproj b/libraries/Bot.Builder.Community.Middleware.AzureAdAuthentication/Bot.Builder.Community.Middleware.AzureAdAuthentication.csproj index e8b99151..42c7a75e 100644 --- a/libraries/Bot.Builder.Community.Middleware.AzureAdAuthentication/Bot.Builder.Community.Middleware.AzureAdAuthentication.csproj +++ b/libraries/Bot.Builder.Community.Middleware.AzureAdAuthentication/Bot.Builder.Community.Middleware.AzureAdAuthentication.csproj @@ -1,4 +1,5 @@  + netstandard2.0 @@ -16,7 +17,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Middleware.BestMatch/Bot.Builder.Community.Middleware.BestMatch.csproj b/libraries/Bot.Builder.Community.Middleware.BestMatch/Bot.Builder.Community.Middleware.BestMatch.csproj index 280e1553..554d48ac 100644 --- a/libraries/Bot.Builder.Community.Middleware.BestMatch/Bot.Builder.Community.Middleware.BestMatch.csproj +++ b/libraries/Bot.Builder.Community.Middleware.BestMatch/Bot.Builder.Community.Middleware.BestMatch.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -14,7 +15,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Middleware.HandleActivityType/Bot.Builder.Community.Middleware.HandleActivityType.csproj b/libraries/Bot.Builder.Community.Middleware.HandleActivityType/Bot.Builder.Community.Middleware.HandleActivityType.csproj index 70000e96..7fb890d4 100644 --- a/libraries/Bot.Builder.Community.Middleware.HandleActivityType/Bot.Builder.Community.Middleware.HandleActivityType.csproj +++ b/libraries/Bot.Builder.Community.Middleware.HandleActivityType/Bot.Builder.Community.Middleware.HandleActivityType.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -14,7 +15,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Middleware.SentimentAnalysis/Bot.Builder.Community.Middleware.SentimentAnalysis.csproj b/libraries/Bot.Builder.Community.Middleware.SentimentAnalysis/Bot.Builder.Community.Middleware.SentimentAnalysis.csproj index 138f6cac..6c11d5f2 100644 --- a/libraries/Bot.Builder.Community.Middleware.SentimentAnalysis/Bot.Builder.Community.Middleware.SentimentAnalysis.csproj +++ b/libraries/Bot.Builder.Community.Middleware.SentimentAnalysis/Bot.Builder.Community.Middleware.SentimentAnalysis.csproj @@ -1,4 +1,5 @@  + netstandard2.0 @@ -16,7 +17,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Middleware.SpellCheck/Bot.Builder.Community.Middleware.SpellCheck.csproj b/libraries/Bot.Builder.Community.Middleware.SpellCheck/Bot.Builder.Community.Middleware.SpellCheck.csproj index 9e96f7ec..54d6de14 100644 --- a/libraries/Bot.Builder.Community.Middleware.SpellCheck/Bot.Builder.Community.Middleware.SpellCheck.csproj +++ b/libraries/Bot.Builder.Community.Middleware.SpellCheck/Bot.Builder.Community.Middleware.SpellCheck.csproj @@ -1,4 +1,5 @@  + netstandard2.0 @@ -16,7 +17,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Recognizers.FuzzyRecognizer/Bot.Builder.Community.Recognizers.FuzzyRecognizer.csproj b/libraries/Bot.Builder.Community.Recognizers.FuzzyRecognizer/Bot.Builder.Community.Recognizers.FuzzyRecognizer.csproj index 3bffaf94..4a93a848 100644 --- a/libraries/Bot.Builder.Community.Recognizers.FuzzyRecognizer/Bot.Builder.Community.Recognizers.FuzzyRecognizer.csproj +++ b/libraries/Bot.Builder.Community.Recognizers.FuzzyRecognizer/Bot.Builder.Community.Recognizers.FuzzyRecognizer.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -14,7 +15,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Recognizers.FuzzyRecognizer/FuzzyRecognizer.cs b/libraries/Bot.Builder.Community.Recognizers.FuzzyRecognizer/FuzzyRecognizer.cs index b44c1132..37f30d45 100644 --- a/libraries/Bot.Builder.Community.Recognizers.FuzzyRecognizer/FuzzyRecognizer.cs +++ b/libraries/Bot.Builder.Community.Recognizers.FuzzyRecognizer/FuzzyRecognizer.cs @@ -15,7 +15,7 @@ public FuzzyRecognizer(FuzzyRecognizerOptions fuzzyRecognizerOptions = null) _fuzzyRecognizerOptions = fuzzyRecognizerOptions ?? new FuzzyRecognizerOptions(); } - public async Task Recognize(IEnumerable choices, string utterance) + public Task Recognize(IEnumerable choices, string utterance) { if (string.IsNullOrEmpty(utterance)) throw new ArgumentNullException(nameof(utterance)); @@ -23,7 +23,7 @@ public async Task Recognize(IEnumerable choices, if (choices == null) throw new ArgumentNullException(nameof(choices)); - return FindAllMatches(choices, utterance, _fuzzyRecognizerOptions); + return Task.FromResult(FindAllMatches(choices, utterance, _fuzzyRecognizerOptions)); } private static FuzzyRecognizerResult FindAllMatches(IEnumerable choices, string utterance, FuzzyRecognizerOptions options) diff --git a/libraries/Bot.Builder.Community.Storage.Elasticsearch/Bot.Builder.Community.Storage.Elasticsearch.csproj b/libraries/Bot.Builder.Community.Storage.Elasticsearch/Bot.Builder.Community.Storage.Elasticsearch.csproj index 969920ff..ccf786b2 100644 --- a/libraries/Bot.Builder.Community.Storage.Elasticsearch/Bot.Builder.Community.Storage.Elasticsearch.csproj +++ b/libraries/Bot.Builder.Community.Storage.Elasticsearch/Bot.Builder.Community.Storage.Elasticsearch.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -14,7 +15,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Storage.EntityFramework/Bot.Builder.Community.Storage.EntityFramework.csproj b/libraries/Bot.Builder.Community.Storage.EntityFramework/Bot.Builder.Community.Storage.EntityFramework.csproj index 3b1f6984..2bb9de52 100644 --- a/libraries/Bot.Builder.Community.Storage.EntityFramework/Bot.Builder.Community.Storage.EntityFramework.csproj +++ b/libraries/Bot.Builder.Community.Storage.EntityFramework/Bot.Builder.Community.Storage.EntityFramework.csproj @@ -1,4 +1,5 @@ + netstandard2.0 @@ -14,7 +15,7 @@ - + diff --git a/libraries/Bot.Builder.Community.Storage.EntityFramework/EntityFrameworkTranscriptStore.cs b/libraries/Bot.Builder.Community.Storage.EntityFramework/EntityFrameworkTranscriptStore.cs index d0ca967e..e422f62e 100644 --- a/libraries/Bot.Builder.Community.Storage.EntityFramework/EntityFrameworkTranscriptStore.cs +++ b/libraries/Bot.Builder.Community.Storage.EntityFramework/EntityFrameworkTranscriptStore.cs @@ -88,7 +88,7 @@ public async Task LogActivityAsync(IActivity activity) /// Continuatuation token to page through results. (Id of last record returned) /// Earliest time to include. /// PagedResult of activities. - public async Task> GetTranscriptActivitiesAsync(string channelId, string conversationId, string continuationToken = null, DateTimeOffset startDate = default(DateTimeOffset)) + public Task> GetTranscriptActivitiesAsync(string channelId, string conversationId, string continuationToken = null, DateTimeOffset startDate = default(DateTimeOffset)) { if (string.IsNullOrEmpty(channelId)) { @@ -136,7 +136,7 @@ public async Task LogActivityAsync(IActivity activity) } } - return pagedResult; + return Task.FromResult(pagedResult); } /// @@ -145,7 +145,7 @@ public async Task LogActivityAsync(IActivity activity) /// Channel Id. /// Continuatuation token to page through results. /// A A task that represents the work queued to execute. - public async Task> ListTranscriptsAsync(string channelId, string continuationToken = null) + public Task> ListTranscriptsAsync(string channelId, string continuationToken = null) { if (string.IsNullOrEmpty(channelId)) { @@ -195,7 +195,7 @@ from p in grp } } - return pagedResult; + return Task.FromResult(pagedResult); } /// diff --git a/tests/Bot.Builder.Community.Adapters.Alexa.Tests/AlexaRequestMapperTests.cs b/tests/Bot.Builder.Community.Adapters.Alexa.Tests/AlexaRequestMapperTests.cs index 2947a249..9f28e293 100644 --- a/tests/Bot.Builder.Community.Adapters.Alexa.Tests/AlexaRequestMapperTests.cs +++ b/tests/Bot.Builder.Community.Adapters.Alexa.Tests/AlexaRequestMapperTests.cs @@ -44,7 +44,7 @@ public void ConstructorWithLoggerOnlyShouldSucceed() public void MergeActivitiesReturnsNullWithNullActivities() { var alexaAdapter = new AlexaRequestMapper(); - Assert.Null(alexaAdapter.MergeActivities(new List())); + Assert.Null(alexaAdapter.MergeActivities(null)); } [Fact] @@ -54,6 +54,127 @@ public void MergeActivitiesReturnsNullWithNoActivities() Assert.Null(alexaAdapter.MergeActivities(new List())); } + [Fact] + public void IntentRequestMappedReturnsLocale() + { + // arrange + var skillRequest = new SkillRequest + { + Request = new IntentRequest() + { + Locale = "en-US", + Intent = new Intent() + { + Slots = new Dictionary() + { + { "phrase", new Slot() } + } + } + }, + Context = new Context + { + System = new AlexaSystem() { Application = new Application(), User = new User() } + }, + Session = new Session() + { + User = new User() + } + }; + + + // act + var alexaMapper = new AlexaRequestMapper(); + var result = alexaMapper.RequestToActivity(skillRequest); + + // assert + Assert.Equal("en-US", result.Locale); + } + + [Fact] + public void LaunchRequestMappedReturnsNull() + { + // arrange + var skillRequest = new SkillRequest + { + Request = new LaunchRequest() {}, + Context = new Context + { + System = new AlexaSystem() { Application = new Application(), User = new User() } + }, + Session = new Session() + { + User = new User() + } + }; + + + // act + var alexaMapper = new AlexaRequestMapper(); + var result = alexaMapper.RequestToActivity(skillRequest); + + // assert + Assert.Null(result.Locale); + } + + [Fact] + public void IntentRequestMappedReturnsNull() + { + // arrange + var skillRequest = new SkillRequest + { + Request = new IntentRequest() { Intent = new Intent() + { + Slots = new Dictionary() + { + { "phrase", new Slot() } + } + } + }, + Context = new Context + { + System = new AlexaSystem() { Application = new Application(), User = new User() } + }, + Session = new Session() + { + User = new User() + } + }; + + + // act + var alexaMapper = new AlexaRequestMapper(); + var result = alexaMapper.RequestToActivity(skillRequest); + + // assert + Assert.Null(result.Locale); + } + + [Fact] + public void LaunchRequestMappedReturnsLocale() + { + // arrange + var skillRequest = new SkillRequest + { + Request = new LaunchRequest() {Locale = "en-US"}, + Context = new Context + { + System = new AlexaSystem() {Application = new Application(), User = new User()} + }, + Session = new Session() + { + User = new User() + } + }; + + + // act + var alexaMapper = new AlexaRequestMapper(); + var result = alexaMapper.RequestToActivity(skillRequest); + + // assert + Assert.Equal("en-US", result.Locale); + } + [Fact] public void MergeActivitiesReturnIdenticalSingleActivityNoSsml() { @@ -65,8 +186,8 @@ public void MergeActivitiesReturnIdenticalSingleActivityNoSsml() var processActivityResult = alexaAdapter.MergeActivities(new List() { inputActivity }); - Assert.Equal(text, processActivityResult.Text); - Assert.Equal(ssml, processActivityResult.Speak); + Assert.Equal(text, processActivityResult.MergedActivity.Text); + Assert.Equal(ssml, processActivityResult.MergedActivity.Speak); } [Fact] @@ -80,9 +201,9 @@ public void MergeActivitiesReturnsIdenticalSingleActivityWithSpeakSsmlTag() var processActivityResult = alexaAdapter.MergeActivities(new List() { inputActivity }); - Assert.Equal(text, processActivityResult.Text); + Assert.Equal(text, processActivityResult.MergedActivity.Text); // When removing the speak tag the serializer adds the missing space at the end of the xml element. This doesn't matter for rendering in Alexa so it is fine. - Assert.Equal(ssml.Replace("/>", " />"), processActivityResult.Speak); + Assert.Equal(ssml.Replace("/>", " />"), processActivityResult.MergedActivity.Speak); } [Fact] @@ -96,8 +217,8 @@ public void MergeActivitiesReturnsSingleActivityAddingSpeakSsmlTag() var processActivityResult = alexaAdapter.MergeActivities(new List() { inputActivity }); - Assert.Equal(text, processActivityResult.Text); - Assert.Equal($"{ssml}", processActivityResult.Speak); + Assert.Equal(text, processActivityResult.MergedActivity.Text); + Assert.Equal($"{ssml}", processActivityResult.MergedActivity.Speak); } [Fact] @@ -110,7 +231,7 @@ public void MergeActivitiesReturnsCorrectlyJoinedText() var processActivityResult = alexaAdapter.MergeActivities(new List() { firstActivity, secondActivity }); - Assert.Equal("This is the first activity. This is the second activity", processActivityResult.Text); + Assert.Equal("This is the first activity. This is the second activity", processActivityResult.MergedActivity.Text); } [Fact] @@ -129,7 +250,7 @@ public void MergeActivitiesAttachmentAndPlainText() var processActivityResult = alexaAdapter.MergeActivities(new List { firstActivity, secondActivity }); - Assert.Equal("{ \"contentType\": \"image/jpeg\", \"content\": \"https://somefantasticurl/\", \"name\": \"Attachment1.jpg\" }", processActivityResult.Text); + Assert.Equal("{ \"contentType\": \"image/jpeg\", \"content\": \"https://somefantasticurl/\", \"name\": \"Attachment1.jpg\" }", processActivityResult.MergedActivity.Text); } [Fact] @@ -145,10 +266,10 @@ public void MergeActivitiesMergesAttachments() var processActivityResult = alexaAdapter.MergeActivities(new List() { firstActivity, secondActivity }); - Assert.Equal("This is the first activity. This is the second activity", processActivityResult.Text); - Assert.NotNull(processActivityResult.Attachments); - Assert.Equal(1, processActivityResult.Attachments.Count); - Assert.Equal(AlexaAttachmentContentTypes.Card, processActivityResult.Attachments[0].ContentType); + Assert.Equal("This is the first activity. This is the second activity", processActivityResult.MergedActivity.Text); + Assert.NotNull(processActivityResult.MergedActivity.Attachments); + Assert.Equal(1, processActivityResult.MergedActivity.Attachments.Count); + Assert.Equal(AlexaAttachmentContentTypes.Card, processActivityResult.MergedActivity.Attachments[0].ContentType); } [Fact] @@ -158,12 +279,13 @@ public void MergeActivitiesIgnoresNonMessageActivities() var firstActivity = MessageFactory.Text("This is the first activity."); var traceActivity = Activity.CreateTraceActivity("This is a trace") as Activity; + traceActivity.Text = "This text won't show up"; var secondActivity = MessageFactory.Text("This is the second activity"); var typingActivity = Activity.CreateTypingActivity() as Activity; var processActivityResult = alexaAdapter.MergeActivities(new List() { firstActivity, traceActivity, secondActivity, typingActivity }); - Assert.Equal("This is the first activity. This is the second activity", processActivityResult.Text); + Assert.Equal("This is the first activity. This is the second activity", processActivityResult.MergedActivity.Text); } [Fact] @@ -179,8 +301,42 @@ public void MergeActivitiesReturnsCorrectlyJoinedSpeakWithSsml() var processActivityResult = alexaAdapter.MergeActivities(new List() { firstActivity, secondActivity }); - Assert.Equal("This isthe first activity SSMLThis is the second activity SSML", - processActivityResult.Speak); + Assert.Equal("This isthe first activity SSMLThis is the second activity SSML", processActivityResult.MergedActivity.Speak); + Assert.Equal("This is the first activity. This is the second activity", processActivityResult.MergedActivity.Text); + Assert.False(processActivityResult.EndOfConversationFlagged); + } + + [Fact] + public void MergeActivitiesWithEndOfConversationOnly() + { + var alexaAdapter = new AlexaRequestMapper(); + + var activity = (Activity) Activity.CreateEndOfConversationActivity(); + + var processActivityResult = alexaAdapter.MergeActivities(new List() { activity }); + + // Empty merged activities. + Assert.NotNull(processActivityResult); + Assert.Null(processActivityResult.MergedActivity); + Assert.True(processActivityResult.EndOfConversationFlagged); + } + + [Fact] + public void MergeActivitiesJoinedTextWithEndOfConversation() + { + var alexaAdapter = new AlexaRequestMapper(); + + var activites = new List() + { + MessageFactory.Text("This is the first activity."), + (Activity)Activity.CreateEndOfConversationActivity(), + MessageFactory.Text("This is the second activity") + }; + + var processActivityResult = alexaAdapter.MergeActivities(activites); + + Assert.Equal("This is the first activity. This is the second activity", processActivityResult.MergedActivity.Text); + Assert.True(processActivityResult.EndOfConversationFlagged); } [Fact] @@ -213,10 +369,10 @@ public void MergeActivitiesCorrectlyConvertsMarkdownToPlainText() var processActivityResult = alexaAdapter.MergeActivities(new List() { firstActivity, secondActivity }); Assert.Equal("This is the first activity. Heading 1. This is another paragraph. Item 1, Item 2, Item 3. Heading 2. 1. Item 1, 2. Item 2, 3. Item 3. More info visit our web site www.microsoft.com. This is the second activity", - processActivityResult.Text); + processActivityResult.MergedActivity.Text); Assert.Equal("This isthe first activity SSMLThis is the second activity SSML", - processActivityResult.Speak); + processActivityResult.MergedActivity.Speak); } [Fact] @@ -229,7 +385,7 @@ public void PlainTextMessageActivityConverted() activity.Text = "Hello world"; activity.TextFormat = TextFormatTypes.Plain; - var skillResponse = ExecuteActivityToResponse(mapper, activity, skillRequest); + var skillResponse = ExecuteActivityToResponse(mapper, new MergedActivityResult { MergedActivity = activity }, skillRequest); VerifyPlainTextResponse(skillResponse, activity.Text); } @@ -278,7 +434,7 @@ public void NonMessageActivityConverted() var activity = Activity.CreateTraceActivity("This is a trace") as Activity; - var skillResponse = ExecuteActivityToResponse(mapper, activity, skillRequest); + var skillResponse = ExecuteActivityToResponse(mapper, new MergedActivityResult { MergedActivity = activity }, skillRequest); VerifyPlainTextResponse(skillResponse, string.Empty); } @@ -340,7 +496,7 @@ public void MessageActivityWithAlexaCardDirectiveAttachmentsConverted() activity.Attachments.Add(displayDirective.ToAttachment()); activity.Attachments.Add(simpleCard.ToAttachment()); - var skillResponse = ExecuteActivityToResponse(mapper, activity, skillRequest); + var skillResponse = ExecuteActivityToResponse(mapper, new MergedActivityResult { MergedActivity = activity }, skillRequest); VerifyCardAttachmentAndDirectiveResponse(skillResponse, simpleCard, new List() { hintDirective, displayDirective }); } @@ -375,7 +531,7 @@ public void MessageActivityWithHeroCardConverted() var activity = Activity.CreateMessageActivity() as Activity; activity.Attachments.Add(new Attachment() { ContentType = HeroCard.ContentType, Content = heroCard}); - var skillResponse = ExecuteActivityToResponse(mapper, activity, skillRequest); + var skillResponse = ExecuteActivityToResponse(mapper, new MergedActivityResult { MergedActivity = activity }, skillRequest); Assert.NotNull(skillResponse.Response.Card); Assert.Equal(typeof(StandardCard), skillResponse.Response.Card.GetType()); @@ -409,7 +565,7 @@ public void MessageActivityWithSignInCard() var activity = Activity.CreateMessageActivity() as Activity; activity.Attachments.Add(new Attachment() { ContentType = SigninCard.ContentType, Content = signinCard }); - var skillResponse = ExecuteActivityToResponse(mapper, activity, skillRequest); + var skillResponse = ExecuteActivityToResponse(mapper, new MergedActivityResult { MergedActivity = activity }, skillRequest); Assert.NotNull(skillResponse.Response.Card); Assert.Equal(typeof(LinkAccountCard), skillResponse.Response.Card.GetType()); @@ -476,7 +632,10 @@ private static void VerifyCardAttachmentAndDirectiveResponse(SkillResponse skill directives.IsSameOrEqualTo(skillResponse.Response.Directives); } - private static SkillResponse ExecuteActivityToResponse(AlexaRequestMapper mapper, Activity activity, SkillRequest alexaRequest) - => mapper.ActivityToResponse(ActivityHelper.GetAnonymizedActivity(activity), alexaRequest); + private static SkillResponse ExecuteActivityToResponse(AlexaRequestMapper mapper, MergedActivityResult mergedActivityResult, SkillRequest alexaRequest) + { + mergedActivityResult.MergedActivity = ActivityHelper.GetAnonymizedActivity(mergedActivityResult.MergedActivity); + return mapper.ActivityToResponse(mergedActivityResult, alexaRequest); + } } } diff --git a/tests/Bot.Builder.Community.Adapters.Alexa.Tests/Bot.Builder.Community.Adapters.Alexa.Tests.csproj b/tests/Bot.Builder.Community.Adapters.Alexa.Tests/Bot.Builder.Community.Adapters.Alexa.Tests.csproj index d3377bde..3e063b52 100644 --- a/tests/Bot.Builder.Community.Adapters.Alexa.Tests/Bot.Builder.Community.Adapters.Alexa.Tests.csproj +++ b/tests/Bot.Builder.Community.Adapters.Alexa.Tests/Bot.Builder.Community.Adapters.Alexa.Tests.csproj @@ -2,7 +2,6 @@ netcoreapp3.1 - false diff --git a/tests/Bot.Builder.Community.Adapters.Infobip.Tests/Bot.Builder.Community.Adapters.Infobip.Tests.csproj b/tests/Bot.Builder.Community.Adapters.Infobip.Tests/Bot.Builder.Community.Adapters.Infobip.Tests.csproj index 879cc363..41b0ebc9 100644 --- a/tests/Bot.Builder.Community.Adapters.Infobip.Tests/Bot.Builder.Community.Adapters.Infobip.Tests.csproj +++ b/tests/Bot.Builder.Community.Adapters.Infobip.Tests/Bot.Builder.Community.Adapters.Infobip.Tests.csproj @@ -2,7 +2,6 @@ netcoreapp3.1 - false diff --git a/tests/Bot.Builder.Community.Adapters.RingCentral.Tests/Bot.Builder.Community.Adapters.RingCentral.Tests.csproj b/tests/Bot.Builder.Community.Adapters.RingCentral.Tests/Bot.Builder.Community.Adapters.RingCentral.Tests.csproj index 41f8bfcc..6239faef 100644 --- a/tests/Bot.Builder.Community.Adapters.RingCentral.Tests/Bot.Builder.Community.Adapters.RingCentral.Tests.csproj +++ b/tests/Bot.Builder.Community.Adapters.RingCentral.Tests/Bot.Builder.Community.Adapters.RingCentral.Tests.csproj @@ -2,7 +2,6 @@ netcoreapp3.1 - false @@ -19,17 +18,15 @@ + + + - - - - - - + @@ -47,10 +44,6 @@ - - - - diff --git a/tests/Bot.Builder.Community.Adapters.Tests/Bot.Builder.Community.Adapters.Twitter.Tests.csproj b/tests/Bot.Builder.Community.Adapters.Tests/Bot.Builder.Community.Adapters.Twitter.Tests.csproj index c56fc135..a8a0eb38 100644 --- a/tests/Bot.Builder.Community.Adapters.Tests/Bot.Builder.Community.Adapters.Twitter.Tests.csproj +++ b/tests/Bot.Builder.Community.Adapters.Tests/Bot.Builder.Community.Adapters.Twitter.Tests.csproj @@ -2,7 +2,6 @@ netcoreapp2.1 - false diff --git a/tests/Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests/Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests.csproj b/tests/Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests/Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests.csproj index e007b139..7034f194 100644 --- a/tests/Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests/Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests.csproj +++ b/tests/Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests/Bot.Builder.Community.Dialogs.Adaptive.Rest.Tests.csproj @@ -2,7 +2,6 @@ netcoreapp3.1 - false diff --git a/tests/Bot.Builder.Community.Dialogs.Prompts.Tests/Bot.Builder.Community.Dialogs.Prompts.Tests.csproj b/tests/Bot.Builder.Community.Dialogs.Prompts.Tests/Bot.Builder.Community.Dialogs.Prompts.Tests.csproj index 191baa30..b8fea4cb 100644 --- a/tests/Bot.Builder.Community.Dialogs.Prompts.Tests/Bot.Builder.Community.Dialogs.Prompts.Tests.csproj +++ b/tests/Bot.Builder.Community.Dialogs.Prompts.Tests/Bot.Builder.Community.Dialogs.Prompts.Tests.csproj @@ -2,13 +2,9 @@ netcoreapp2.1 - false - 1.0.0 - 1.0.0 - 1.0.0 diff --git a/tests/Bot.Builder.Community.Middleware.Tests/Bot.Builder.Community.Middleware.Tests.csproj b/tests/Bot.Builder.Community.Middleware.Tests/Bot.Builder.Community.Middleware.Tests.csproj index 61795ad7..f4574458 100644 --- a/tests/Bot.Builder.Community.Middleware.Tests/Bot.Builder.Community.Middleware.Tests.csproj +++ b/tests/Bot.Builder.Community.Middleware.Tests/Bot.Builder.Community.Middleware.Tests.csproj @@ -8,25 +8,11 @@ 1.0.0 1.0.0 - - - 1701;1702;1705;1998 - - - - 1701;1702;1705;1998 - - - - - - - diff --git a/tests/Bot.Builder.Community.Middleware.Tests/HandleActivityType_MiddlewareTests.cs b/tests/Bot.Builder.Community.Middleware.Tests/HandleActivityType_MiddlewareTests.cs index c4981380..37b9399b 100644 --- a/tests/Bot.Builder.Community.Middleware.Tests/HandleActivityType_MiddlewareTests.cs +++ b/tests/Bot.Builder.Community.Middleware.Tests/HandleActivityType_MiddlewareTests.cs @@ -38,9 +38,10 @@ public async Task ActivityFilter_TestMiddleware_HandleActivityAndContinue() public async Task ActivityFilter_TestMiddleware_HandleMessageActivityOnly() { TestAdapter adapter = new TestAdapter() - .Use(new HandleActivityTypeMiddleware(ActivityTypes.ConversationUpdate, async (context, next, cancellationToken) => + .Use(new HandleActivityTypeMiddleware(ActivityTypes.ConversationUpdate, (context, next, cancellationToken) => { Assert.Fail("Incorrect activity filter ran"); + throw new AssertFailedException("Incorrect activity filter ran"); })) .Use(new HandleActivityTypeMiddleware(ActivityTypes.Message, async (context, next, cancellationToken) => { @@ -90,7 +91,7 @@ public async Task ActivityFilter_TestMiddleware_MultipleHandlers() [TestMethod] [TestCategory("Middleware")] - public async Task ActivityFilter_TestMiddleware_NullActivityType() + public void ActivityFilter_TestMiddleware_NullActivityType() { try { @@ -109,7 +110,7 @@ public async Task ActivityFilter_TestMiddleware_NullActivityType() [TestMethod] [TestCategory("Middleware")] - public async Task ActivityFilter_TestMiddleware_EmptyActivityType() + public void ActivityFilter_TestMiddleware_EmptyActivityType() { try { diff --git a/tests/Bot.Builder.Community.Recognizers.Tests/Bot.Builder.Community.Recognizers.Tests.csproj b/tests/Bot.Builder.Community.Recognizers.Tests/Bot.Builder.Community.Recognizers.Tests.csproj index 7cac2e8d..a4b4f845 100644 --- a/tests/Bot.Builder.Community.Recognizers.Tests/Bot.Builder.Community.Recognizers.Tests.csproj +++ b/tests/Bot.Builder.Community.Recognizers.Tests/Bot.Builder.Community.Recognizers.Tests.csproj @@ -8,25 +8,11 @@ 1.0.0 1.0.0 - - - 1701;1702;1705;1998 - - - - 1701;1702;1705;1998 - - - - - - - diff --git a/tests/Bot.Builder.Community.Storage.Tests/Bot.Builder.Community.Storage.Tests.csproj b/tests/Bot.Builder.Community.Storage.Tests/Bot.Builder.Community.Storage.Tests.csproj index 97bd2d9f..8aa314c0 100644 --- a/tests/Bot.Builder.Community.Storage.Tests/Bot.Builder.Community.Storage.Tests.csproj +++ b/tests/Bot.Builder.Community.Storage.Tests/Bot.Builder.Community.Storage.Tests.csproj @@ -2,23 +2,17 @@ netcoreapp2.1 - false - 1.0.0 - 1.0.0 - 1.0.0 - -