From 5095a85b309fe13d71fbc3caba2a94e4a562a280 Mon Sep 17 00:00:00 2001 From: Gary Pretty Date: Fri, 15 May 2020 16:31:59 +0100 Subject: [PATCH] Further Google request validation fix (#256) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Master (#252) * Fix for Zoom adapter throwing on no channel ID (#245) * Adding RingCentral adapter (#215) * Adding RingCentral adapter * Updating documentation #wip * Adding packaging details * Addressing warnings Co-authored-by: Gary Pretty * Adding sample RingCentral Adapter bot (#221) * Adding RingCentral adapter * Updating documentation #wip * Adding packaging details * Addressing warnings * Adding RingCentral Adapter sample and updating documentation * Fix up unit tests * Adding RingCentral reference to main doc * Fix up git ignore Co-authored-by: Gary Pretty * Update README.md * Update README.md * Add GitHub link to profile (#223) * Updated sample package references. Added ring central sample. (#224) * Updated sample package references. Added ring central sample. * Update dotnet pack yaml config * Further update to dotnet pack yaml to fix no matching projects build pipeline error. * Bump Microsoft.AspNetCore.All in /samples/Form Flow Sample (#225) Bumps [Microsoft.AspNetCore.All](https://github.com/aspnet/Universe) from 2.1.1 to 2.1.4. - [Release notes](https://github.com/aspnet/Universe/releases) - [Changelog](https://github.com/aspnet/Universe/blob/master/docs/CrossRepoBreakingChanges.md) - [Commits](https://github.com/aspnet/Universe/compare/2.1.1...2.1.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump Microsoft.AspNetCore.All in /samples/Google Adapter Sample (#228) Bumps [Microsoft.AspNetCore.All](https://github.com/aspnet/Universe) from 2.1.1 to 2.1.4. - [Release notes](https://github.com/aspnet/Universe/releases) - [Changelog](https://github.com/aspnet/Universe/blob/master/docs/CrossRepoBreakingChanges.md) - [Commits](https://github.com/aspnet/Universe/compare/2.1.1...2.1.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump Microsoft.AspNetCore.All in /samples/BestMatch Middleware Sample (#226) Bumps [Microsoft.AspNetCore.All](https://github.com/aspnet/Universe) from 2.1.1 to 2.1.4. - [Release notes](https://github.com/aspnet/Universe/releases) - [Changelog](https://github.com/aspnet/Universe/blob/master/docs/CrossRepoBreakingChanges.md) - [Commits](https://github.com/aspnet/Universe/compare/2.1.1...2.1.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump Microsoft.AspNetCore.All in /samples/Alexa Adapter Sample (#227) Bumps [Microsoft.AspNetCore.All](https://github.com/aspnet/Universe) from 2.1.1 to 2.1.4. - [Release notes](https://github.com/aspnet/Universe/releases) - [Changelog](https://github.com/aspnet/Universe/blob/master/docs/CrossRepoBreakingChanges.md) - [Commits](https://github.com/aspnet/Universe/compare/2.1.1...2.1.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Gary Pretty * Update adaptor to use current elastic 7.x (#233) * Update adaptor to use current elastic 7.x * Update ElasticsearchStorage.cs * Ported the BestMatch Middleware Sample to MVC. (#200) Co-authored-by: Gary Pretty * Refactor of Alexa adapter (#179) * - Initial Alexa adapter refactor to adopt Alexa.Net - Moved towards deprecating the AlexaHttpAdapter (kept for backwards compat) * - Updated Directory Build Props to include StyleCop package - Enable warnings as errors for Alexa project * - Added attachment types for directives / cards etc. - Updated content extension methods to use Alexa.NET and attachments model - Updated some core adapter logic * - Added support for Directives - Updated logic to use attachments as opposed to TurnState - Further adapter logic updates * Update GitVersion tag for feature branches * - Moved method for stylecop * Update GitVersion to attempt to ensure package names are incremented correctly on each build. * Updated package dependencies for Alexa adapter * Updated Alexa Sample * Update readme for preview package * Amended middleware and adaper for skills support * Updates following PR feedback * Removed ContinueConversationAsync overload not available until SDK 4.7. Will be re-added later for skills support. * Add LaunchRequest -> ConversationUpdate logic to middleware as per @pavolum's idea. * Added message activity concat and suggested actions conversion to google adapter * Adding configurable flag which will inform the adapter if it should concat multiple text activities in one turn * minor clean up * removing google adapter changes, renaming functions, removing suggested action conversion * Remove unused option * - Some naming tweaks - Added policy for handling multiple outgoing activities. - Added ContinueConversationAsync method * Move multiple activity policy enum out of options class * Naming tweak for outgoing activity policy * Update docs and add automatic end of session when no outgoing activities are sent * Readme update * Change default concat policy. Update readme. * Changes following code review (#195) * Move the activities list to within the turn context * Update adapter to make activity processing method virtual and remove multiple activity policy. Improved concat logic. * Fix speak concat bug * Add first Alexa tests * Update README.md * Update Bot Builder NuGet references * Updates to Alexa Adapter to pull out core package with request / activity transform logic, attachment types and context extension methods. * Fix failing test * Updates to move middleware into adapter. Rename helper to AlexaRequestMapper * Further refinements of mapper * Update AlexaRequestMapperOptions.cs * Updates to mapper / options * Add Alexa Auth Handler. (#204) * Rename some methods on Alexa Mapper. Update NuGet packages to 4.8. * Rename auth handler class name * Removing old Alexa auth handler * Fix test project dependencies * Update Alexa Core project file * Amend pipeline to try and resolve dotnet pack issue * Remvoed and re-added Alexa projects to SLN * Attempt to address issue with GitVersion env vars no longer shared across pipeline tasks * Update pipeline * Update Auth Handler (#205) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Release/4.8.0 (#206) * Google Adapter: Google Content Type not set to UTF-8 * Alexa Adapter: Add person to alexasystem to support Alexa voiceprint to know the ID of the speaker (#198) - Thanks @jamesemann * TwitterAdapter: Added unit tests (#197) - Thanks @matiasroldan6 @santgr11 * DevOps: Azure DevOps Pipelines GitVersion issue * Dependencies: Update to Bot Framework SDK 4.8 * Fix bug with not handling built in StopIntent * Add virtual to auth methods (#209) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. Co-authored-by: Gary Pretty * Add fallback support for Alexa request types => EventActivity * Add a simple markdown to plain text converter (#210) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. * Add simple markdown formatter Co-authored-by: Gary Pretty * Update attachment implementation (#213) * Update attachment implementation to align with BF SDK and work correctly with ABS. * Added tests for new attachment implementation * Moved text normalization logic earlier and amended markdown handling (#212) * Moved logic for text normalization earlier in the pipeline into the MergeActivities method. * Modified markdown renderer to use period instead of new line. Amended list rendering. Added tests. Changed default to markdown. * Convert Alexa attachment types to their strong type if needed. (#214) * Update utility naming to helpers (aligns with SDK / other adapters). (#216) * Merge attachments in activities so they are available in the last message (#217) * Merge attachments in activities so they are available in the last message. * Fix attachments. * Fix for attachment null property handling * Update attachment tests * Remove test for missing attachment properties. Attachments / directives have optional properties, so not all properties will always be present. * Fix tests failing with equality of ref types * Project file with additional NuGet dependency Co-authored-by: Gary Pretty * Update Alexa sample to use latest preview package. Fix assembly name causing Azure deployment issue. Updated sample attachment config. * Added the Alexa Adapter Sample to the Solution (#220) The project was missing from the solution so I have now added it as a part of solution. * Remove conversation type per Activity docs (#229) * Update Alexa Sample * Update README.md * Update readme * Attempt to resolve NuGet dependency between Alexa packages * Update project file ref for local NuGet package * Force alexa project to generate local package * More... * Update for nupack * Fix pipelines pack command Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Arafat Tehsin * Feature/adopt alexadotnet (#235) * - Initial Alexa adapter refactor to adopt Alexa.Net - Moved towards deprecating the AlexaHttpAdapter (kept for backwards compat) * - Updated Directory Build Props to include StyleCop package - Enable warnings as errors for Alexa project * - Added attachment types for directives / cards etc. - Updated content extension methods to use Alexa.NET and attachments model - Updated some core adapter logic * - Added support for Directives - Updated logic to use attachments as opposed to TurnState - Further adapter logic updates * Update GitVersion tag for feature branches * - Moved method for stylecop * Update GitVersion to attempt to ensure package names are incremented correctly on each build. * Updated package dependencies for Alexa adapter * Updated Alexa Sample * Update readme for preview package * Amended middleware and adaper for skills support * Updates following PR feedback * Removed ContinueConversationAsync overload not available until SDK 4.7. Will be re-added later for skills support. * Add LaunchRequest -> ConversationUpdate logic to middleware as per @pavolum's idea. * Added message activity concat and suggested actions conversion to google adapter * Adding configurable flag which will inform the adapter if it should concat multiple text activities in one turn * minor clean up * removing google adapter changes, renaming functions, removing suggested action conversion * Remove unused option * - Some naming tweaks - Added policy for handling multiple outgoing activities. - Added ContinueConversationAsync method * Move multiple activity policy enum out of options class * Naming tweak for outgoing activity policy * Update docs and add automatic end of session when no outgoing activities are sent * Readme update * Change default concat policy. Update readme. * Changes following code review (#195) * Move the activities list to within the turn context * Update adapter to make activity processing method virtual and remove multiple activity policy. Improved concat logic. * Fix speak concat bug * Add first Alexa tests * Update README.md * Update Bot Builder NuGet references * Updates to Alexa Adapter to pull out core package with request / activity transform logic, attachment types and context extension methods. * Fix failing test * Updates to move middleware into adapter. Rename helper to AlexaRequestMapper * Further refinements of mapper * Update AlexaRequestMapperOptions.cs * Updates to mapper / options * Add Alexa Auth Handler. (#204) * Rename some methods on Alexa Mapper. Update NuGet packages to 4.8. * Rename auth handler class name * Removing old Alexa auth handler * Fix test project dependencies * Update Alexa Core project file * Amend pipeline to try and resolve dotnet pack issue * Remvoed and re-added Alexa projects to SLN * Attempt to address issue with GitVersion env vars no longer shared across pipeline tasks * Update pipeline * Update Auth Handler (#205) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Release/4.8.0 (#206) * Google Adapter: Google Content Type not set to UTF-8 * Alexa Adapter: Add person to alexasystem to support Alexa voiceprint to know the ID of the speaker (#198) - Thanks @jamesemann * TwitterAdapter: Added unit tests (#197) - Thanks @matiasroldan6 @santgr11 * DevOps: Azure DevOps Pipelines GitVersion issue * Dependencies: Update to Bot Framework SDK 4.8 * Fix bug with not handling built in StopIntent * Add virtual to auth methods (#209) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. Co-authored-by: Gary Pretty * Add fallback support for Alexa request types => EventActivity * Add a simple markdown to plain text converter (#210) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. * Add simple markdown formatter Co-authored-by: Gary Pretty * Update attachment implementation (#213) * Update attachment implementation to align with BF SDK and work correctly with ABS. * Added tests for new attachment implementation * Moved text normalization logic earlier and amended markdown handling (#212) * Moved logic for text normalization earlier in the pipeline into the MergeActivities method. * Modified markdown renderer to use period instead of new line. Amended list rendering. Added tests. Changed default to markdown. * Convert Alexa attachment types to their strong type if needed. (#214) * Update utility naming to helpers (aligns with SDK / other adapters). (#216) * Merge attachments in activities so they are available in the last message (#217) * Merge attachments in activities so they are available in the last message. * Fix attachments. * Fix for attachment null property handling * Update attachment tests * Remove test for missing attachment properties. Attachments / directives have optional properties, so not all properties will always be present. * Fix tests failing with equality of ref types * Project file with additional NuGet dependency Co-authored-by: Gary Pretty * Update Alexa sample to use latest preview package. Fix assembly name causing Azure deployment issue. Updated sample attachment config. * Added the Alexa Adapter Sample to the Solution (#220) The project was missing from the solution so I have now added it as a part of solution. * Remove conversation type per Activity docs (#229) * Update Alexa Sample * Update README.md * Update readme * Attempt to resolve NuGet dependency between Alexa packages * Update project file ref for local NuGet package * Force alexa project to generate local package * More... * Update for nupack * Fix pipelines pack command * Convert other attachments to their strong type (#234) Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Arafat Tehsin Co-authored-by: Nick Ericson * Update README.md * Update README.md * Update README.md * Update README.md Remove preview label for Alexa adapter * Change Alexa md renderer to remove trailing periods. Added more tests. (#237) * Change Alexa md renderer to remove trailing periods. Added more tests. * Fix link and quote md rendering Co-authored-by: Gary Pretty * Zoom Adapter (#240) * Add Zoom adapter project * Working Zoom adapter including message templates. * Updated Zoom Readme and made some refactorings to solution * Update README.md * Update README.md * Update README.md * Zoom adapter request verification (#241) * Add Zoom adapter project * Working Zoom adapter including message templates. * Updated Zoom Readme and made some refactorings to solution * Fixed Zoom request verification * Don't escape Text (#238) * Update project URLs for packages * Added the class attribute (#242) ..to remain consistent with other adapters. * Update readmes for Alexa / Zoom to update NuGet instructions * Update repo readme * Update README.md * Update README.md * Added channel ID to outgoing Zoom activity mapping Co-authored-by: Jamie D Co-authored-by: martinoss Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alex ln Co-authored-by: Arafat Tehsin Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Nick Ericson * Release 05/15/2020 (#250) * Adding RingCentral adapter (#215) * Adding RingCentral adapter * Updating documentation #wip * Adding packaging details * Addressing warnings Co-authored-by: Gary Pretty * Adding sample RingCentral Adapter bot (#221) * Adding RingCentral adapter * Updating documentation #wip * Adding packaging details * Addressing warnings * Adding RingCentral Adapter sample and updating documentation * Fix up unit tests * Adding RingCentral reference to main doc * Fix up git ignore Co-authored-by: Gary Pretty * Update README.md * Update README.md * Add GitHub link to profile (#223) * Updated sample package references. Added ring central sample. (#224) * Updated sample package references. Added ring central sample. * Update dotnet pack yaml config * Further update to dotnet pack yaml to fix no matching projects build pipeline error. * Bump Microsoft.AspNetCore.All in /samples/Form Flow Sample (#225) Bumps [Microsoft.AspNetCore.All](https://github.com/aspnet/Universe) from 2.1.1 to 2.1.4. - [Release notes](https://github.com/aspnet/Universe/releases) - [Changelog](https://github.com/aspnet/Universe/blob/master/docs/CrossRepoBreakingChanges.md) - [Commits](https://github.com/aspnet/Universe/compare/2.1.1...2.1.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump Microsoft.AspNetCore.All in /samples/Google Adapter Sample (#228) Bumps [Microsoft.AspNetCore.All](https://github.com/aspnet/Universe) from 2.1.1 to 2.1.4. - [Release notes](https://github.com/aspnet/Universe/releases) - [Changelog](https://github.com/aspnet/Universe/blob/master/docs/CrossRepoBreakingChanges.md) - [Commits](https://github.com/aspnet/Universe/compare/2.1.1...2.1.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump Microsoft.AspNetCore.All in /samples/BestMatch Middleware Sample (#226) Bumps [Microsoft.AspNetCore.All](https://github.com/aspnet/Universe) from 2.1.1 to 2.1.4. - [Release notes](https://github.com/aspnet/Universe/releases) - [Changelog](https://github.com/aspnet/Universe/blob/master/docs/CrossRepoBreakingChanges.md) - [Commits](https://github.com/aspnet/Universe/compare/2.1.1...2.1.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump Microsoft.AspNetCore.All in /samples/Alexa Adapter Sample (#227) Bumps [Microsoft.AspNetCore.All](https://github.com/aspnet/Universe) from 2.1.1 to 2.1.4. - [Release notes](https://github.com/aspnet/Universe/releases) - [Changelog](https://github.com/aspnet/Universe/blob/master/docs/CrossRepoBreakingChanges.md) - [Commits](https://github.com/aspnet/Universe/compare/2.1.1...2.1.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Gary Pretty * Update adaptor to use current elastic 7.x (#233) * Update adaptor to use current elastic 7.x * Update ElasticsearchStorage.cs * Ported the BestMatch Middleware Sample to MVC. (#200) Co-authored-by: Gary Pretty * Refactor of Alexa adapter (#179) * - Initial Alexa adapter refactor to adopt Alexa.Net - Moved towards deprecating the AlexaHttpAdapter (kept for backwards compat) * - Updated Directory Build Props to include StyleCop package - Enable warnings as errors for Alexa project * - Added attachment types for directives / cards etc. - Updated content extension methods to use Alexa.NET and attachments model - Updated some core adapter logic * - Added support for Directives - Updated logic to use attachments as opposed to TurnState - Further adapter logic updates * Update GitVersion tag for feature branches * - Moved method for stylecop * Update GitVersion to attempt to ensure package names are incremented correctly on each build. * Updated package dependencies for Alexa adapter * Updated Alexa Sample * Update readme for preview package * Amended middleware and adaper for skills support * Updates following PR feedback * Removed ContinueConversationAsync overload not available until SDK 4.7. Will be re-added later for skills support. * Add LaunchRequest -> ConversationUpdate logic to middleware as per @pavolum's idea. * Added message activity concat and suggested actions conversion to google adapter * Adding configurable flag which will inform the adapter if it should concat multiple text activities in one turn * minor clean up * removing google adapter changes, renaming functions, removing suggested action conversion * Remove unused option * - Some naming tweaks - Added policy for handling multiple outgoing activities. - Added ContinueConversationAsync method * Move multiple activity policy enum out of options class * Naming tweak for outgoing activity policy * Update docs and add automatic end of session when no outgoing activities are sent * Readme update * Change default concat policy. Update readme. * Changes following code review (#195) * Move the activities list to within the turn context * Update adapter to make activity processing method virtual and remove multiple activity policy. Improved concat logic. * Fix speak concat bug * Add first Alexa tests * Update README.md * Update Bot Builder NuGet references * Updates to Alexa Adapter to pull out core package with request / activity transform logic, attachment types and context extension methods. * Fix failing test * Updates to move middleware into adapter. Rename helper to AlexaRequestMapper * Further refinements of mapper * Update AlexaRequestMapperOptions.cs * Updates to mapper / options * Add Alexa Auth Handler. (#204) * Rename some methods on Alexa Mapper. Update NuGet packages to 4.8. * Rename auth handler class name * Removing old Alexa auth handler * Fix test project dependencies * Update Alexa Core project file * Amend pipeline to try and resolve dotnet pack issue * Remvoed and re-added Alexa projects to SLN * Attempt to address issue with GitVersion env vars no longer shared across pipeline tasks * Update pipeline * Update Auth Handler (#205) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Release/4.8.0 (#206) * Google Adapter: Google Content Type not set to UTF-8 * Alexa Adapter: Add person to alexasystem to support Alexa voiceprint to know the ID of the speaker (#198) - Thanks @jamesemann * TwitterAdapter: Added unit tests (#197) - Thanks @matiasroldan6 @santgr11 * DevOps: Azure DevOps Pipelines GitVersion issue * Dependencies: Update to Bot Framework SDK 4.8 * Fix bug with not handling built in StopIntent * Add virtual to auth methods (#209) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. Co-authored-by: Gary Pretty * Add fallback support for Alexa request types => EventActivity * Add a simple markdown to plain text converter (#210) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. * Add simple markdown formatter Co-authored-by: Gary Pretty * Update attachment implementation (#213) * Update attachment implementation to align with BF SDK and work correctly with ABS. * Added tests for new attachment implementation * Moved text normalization logic earlier and amended markdown handling (#212) * Moved logic for text normalization earlier in the pipeline into the MergeActivities method. * Modified markdown renderer to use period instead of new line. Amended list rendering. Added tests. Changed default to markdown. * Convert Alexa attachment types to their strong type if needed. (#214) * Update utility naming to helpers (aligns with SDK / other adapters). (#216) * Merge attachments in activities so they are available in the last message (#217) * Merge attachments in activities so they are available in the last message. * Fix attachments. * Fix for attachment null property handling * Update attachment tests * Remove test for missing attachment properties. Attachments / directives have optional properties, so not all properties will always be present. * Fix tests failing with equality of ref types * Project file with additional NuGet dependency Co-authored-by: Gary Pretty * Update Alexa sample to use latest preview package. Fix assembly name causing Azure deployment issue. Updated sample attachment config. * Added the Alexa Adapter Sample to the Solution (#220) The project was missing from the solution so I have now added it as a part of solution. * Remove conversation type per Activity docs (#229) * Update Alexa Sample * Update README.md * Update readme * Attempt to resolve NuGet dependency between Alexa packages * Update project file ref for local NuGet package * Force alexa project to generate local package * More... * Update for nupack * Fix pipelines pack command Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Arafat Tehsin * Feature/adopt alexadotnet (#235) * - Initial Alexa adapter refactor to adopt Alexa.Net - Moved towards deprecating the AlexaHttpAdapter (kept for backwards compat) * - Updated Directory Build Props to include StyleCop package - Enable warnings as errors for Alexa project * - Added attachment types for directives / cards etc. - Updated content extension methods to use Alexa.NET and attachments model - Updated some core adapter logic * - Added support for Directives - Updated logic to use attachments as opposed to TurnState - Further adapter logic updates * Update GitVersion tag for feature branches * - Moved method for stylecop * Update GitVersion to attempt to ensure package names are incremented correctly on each build. * Updated package dependencies for Alexa adapter * Updated Alexa Sample * Update readme for preview package * Amended middleware and adaper for skills support * Updates following PR feedback * Removed ContinueConversationAsync overload not available until SDK 4.7. Will be re-added later for skills support. * Add LaunchRequest -> ConversationUpdate logic to middleware as per @pavolum's idea. * Added message activity concat and suggested actions conversion to google adapter * Adding configurable flag which will inform the adapter if it should concat multiple text activities in one turn * minor clean up * removing google adapter changes, renaming functions, removing suggested action conversion * Remove unused option * - Some naming tweaks - Added policy for handling multiple outgoing activities. - Added ContinueConversationAsync method * Move multiple activity policy enum out of options class * Naming tweak for outgoing activity policy * Update docs and add automatic end of session when no outgoing activities are sent * Readme update * Change default concat policy. Update readme. * Changes following code review (#195) * Move the activities list to within the turn context * Update adapter to make activity processing method virtual and remove multiple activity policy. Improved concat logic. * Fix speak concat bug * Add first Alexa tests * Update README.md * Update Bot Builder NuGet references * Updates to Alexa Adapter to pull out core package with request / activity transform logic, attachment types and context extension methods. * Fix failing test * Updates to move middleware into adapter. Rename helper to AlexaRequestMapper * Further refinements of mapper * Update AlexaRequestMapperOptions.cs * Updates to mapper / options * Add Alexa Auth Handler. (#204) * Rename some methods on Alexa Mapper. Update NuGet packages to 4.8. * Rename auth handler class name * Removing old Alexa auth handler * Fix test project dependencies * Update Alexa Core project file * Amend pipeline to try and resolve dotnet pack issue * Remvoed and re-added Alexa projects to SLN * Attempt to address issue with GitVersion env vars no longer shared across pipeline tasks * Update pipeline * Update Auth Handler (#205) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Release/4.8.0 (#206) * Google Adapter: Google Content Type not set to UTF-8 * Alexa Adapter: Add person to alexasystem to support Alexa voiceprint to know the ID of the speaker (#198) - Thanks @jamesemann * TwitterAdapter: Added unit tests (#197) - Thanks @matiasroldan6 @santgr11 * DevOps: Azure DevOps Pipelines GitVersion issue * Dependencies: Update to Bot Framework SDK 4.8 * Fix bug with not handling built in StopIntent * Add virtual to auth methods (#209) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. Co-authored-by: Gary Pretty * Add fallback support for Alexa request types => EventActivity * Add a simple markdown to plain text converter (#210) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. * Add simple markdown formatter Co-authored-by: Gary Pretty * Update attachment implementation (#213) * Update attachment implementation to align with BF SDK and work correctly with ABS. * Added tests for new attachment implementation * Moved text normalization logic earlier and amended markdown handling (#212) * Moved logic for text normalization earlier in the pipeline into the MergeActivities method. * Modified markdown renderer to use period instead of new line. Amended list rendering. Added tests. Changed default to markdown. * Convert Alexa attachment types to their strong type if needed. (#214) * Update utility naming to helpers (aligns with SDK / other adapters). (#216) * Merge attachments in activities so they are available in the last message (#217) * Merge attachments in activities so they are available in the last message. * Fix attachments. * Fix for attachment null property handling * Update attachment tests * Remove test for missing attachment properties. Attachments / directives have optional properties, so not all properties will always be present. * Fix tests failing with equality of ref types * Project file with additional NuGet dependency Co-authored-by: Gary Pretty * Update Alexa sample to use latest preview package. Fix assembly name causing Azure deployment issue. Updated sample attachment config. * Added the Alexa Adapter Sample to the Solution (#220) The project was missing from the solution so I have now added it as a part of solution. * Remove conversation type per Activity docs (#229) * Update Alexa Sample * Update README.md * Update readme * Attempt to resolve NuGet dependency between Alexa packages * Update project file ref for local NuGet package * Force alexa project to generate local package * More... * Update for nupack * Fix pipelines pack command * Convert other attachments to their strong type (#234) Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Arafat Tehsin Co-authored-by: Nick Ericson * Update README.md * Update README.md * Update README.md * Update README.md Remove preview label for Alexa adapter * Change Alexa md renderer to remove trailing periods. Added more tests. (#237) * Change Alexa md renderer to remove trailing periods. Added more tests. * Fix link and quote md rendering Co-authored-by: Gary Pretty * Zoom Adapter (#240) * Add Zoom adapter project * Working Zoom adapter including message templates. * Updated Zoom Readme and made some refactorings to solution * Update README.md * Update README.md * Update README.md * Zoom adapter request verification (#241) * Add Zoom adapter project * Working Zoom adapter including message templates. * Updated Zoom Readme and made some refactorings to solution * Fixed Zoom request verification * Don't escape Text (#238) * Update project URLs for packages * Added the class attribute (#242) ..to remain consistent with other adapters. * Update readmes for Alexa / Zoom to update NuGet instructions * Update repo readme * Update README.md * Update README.md * Added channel ID to outgoing Zoom activity mapping * convert to csharp (#246) * Refactor of Google Adapter (#190) * - Initial Alexa adapter refactor to adopt Alexa.Net - Moved towards deprecating the AlexaHttpAdapter (kept for backwards compat) * - Updated Directory Build Props to include StyleCop package - Enable warnings as errors for Alexa project * - Added attachment types for directives / cards etc. - Updated content extension methods to use Alexa.NET and attachments model - Updated some core adapter logic * - Added support for Directives - Updated logic to use attachments as opposed to TurnState - Further adapter logic updates * Update GitVersion tag for feature branches * - Moved method for stylecop * Update GitVersion to attempt to ensure package names are incremented correctly on each build. * Updated package dependencies for Alexa adapter * Updated Alexa Sample * Update readme for preview package * Amended middleware and adaper for skills support * Updates following PR feedback * Removed ContinueConversationAsync overload not available until SDK 4.7. Will be re-added later for skills support. * Add LaunchRequest -> ConversationUpdate logic to middleware as per @pavolum's idea. * Added message activity concat and suggested actions conversion to google adapter * Adding configurable flag which will inform the adapter if it should concat multiple text activities in one turn * minor clean up * removing google adapter changes, renaming functions, removing suggested action conversion * Remove unused option * - Some naming tweaks - Added policy for handling multiple outgoing activities. - Added ContinueConversationAsync method * Move multiple activity policy enum out of options class * Naming tweak for outgoing activity policy * First iteration on Google refactor * Refactor of Google Adapter * Update samples for Alexa / Google * Update Google Adapter Sample * Update Google adapter to send conversation update activity when user initiates conversation without intent. * Updated readme and sample to use latest preview * Fix image links in readme. * Another attempt to fix images * Further image link fix * Update README.md * Update README.md * Update README.md * Image extension case fix * Update README.md * Updated response content type * Update Startup.cs * Update docs and add automatic end of session when no outgoing activities are sent * Readme update * Change default concat policy. Update readme. * Changes following code review (#195) * Move the activities list to within the turn context * Update adapter to make activity processing method virtual and remove multiple activity policy. Improved concat logic. * Update Google adapter with latest changes to mirror the Alexa adapter * Fix speak concat bug * Fix speak concat issue * Add first Alexa tests * Update README.md * Update README.md * Update Bot Builder NuGet references * Updates to Alexa Adapter to pull out core package with request / activity transform logic, attachment types and context extension methods. * Fix failing test * Updates to move middleware into adapter. Rename helper to AlexaRequestMapper * Further refinements of mapper * Update AlexaRequestMapperOptions.cs * Updates to mapper / options * Add Alexa Auth Handler. (#204) * Rename some methods on Alexa Mapper. Update NuGet packages to 4.8. * Rename auth handler class name * Removing old Alexa auth handler * Fix test project dependencies * Update Alexa Core project file * Amend pipeline to try and resolve dotnet pack issue * Remvoed and re-added Alexa projects to SLN * Attempt to address issue with GitVersion env vars no longer shared across pipeline tasks * Update pipeline * Update Auth Handler (#205) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Fix bug with not handling built in StopIntent * Add virtual to auth methods (#209) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. Co-authored-by: Gary Pretty * Add fallback support for Alexa request types => EventActivity * Add a simple markdown to plain text converter (#210) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. * Add simple markdown formatter Co-authored-by: Gary Pretty * Update attachment implementation (#213) * Update attachment implementation to align with BF SDK and work correctly with ABS. * Added tests for new attachment implementation * Moved text normalization logic earlier and amended markdown handling (#212) * Moved logic for text normalization earlier in the pipeline into the MergeActivities method. * Modified markdown renderer to use period instead of new line. Amended list rendering. Added tests. Changed default to markdown. * Convert Alexa attachment types to their strong type if needed. (#214) * Update utility naming to helpers (aligns with SDK / other adapters). (#216) * Merge attachments in activities so they are available in the last message (#217) * Merge attachments in activities so they are available in the last message. * Fix attachments. * Fix for attachment null property handling * Update attachment tests * Remove test for missing attachment properties. Attachments / directives have optional properties, so not all properties will always be present. * Fix tests failing with equality of ref types * Project file with additional NuGet dependency Co-authored-by: Gary Pretty * Updated the media files (#218) As Action SDK has been changed to Assistant SDK therefore I have updated them * Fixed typo & added .json to package file (#219) * Update Alexa sample to use latest preview package. Fix assembly name causing Azure deployment issue. Updated sample attachment config. * WIP on Google sync with current Alexa approach * Sync google with current alexa approach WIP * Further project factoring * Further refactoring. Split out conversations / dialogflow into separate request mappers. * Update to Google adapter WIP - addressing anonymous user id and removing attachment processing temporarily. * WIP * Significant updates to include Google specific attachment types for system intents and cards * Refactor RequestToActivity and add card / intent factories * Align DialogFlow mapper with Conversation Webhook - derive both from new abstract base class. * Implemented feedback following review Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Arafat Tehsin * [AdaptiveDialogs] Add Rest actions (#232) * Add Adaptive Rest action * Add nuget metadata * Add Readme * Fix readme * Fix documentation * Fix sln * Fix merge sln Co-authored-by: Sébastien BIAUDET * Add Infobip Adapter (#247) * Add Infobip Adapter * Updated readme to nuget vs myget. * Update readme * Switch to xunit * autoformat all files. * Sln file merge Co-authored-by: Gary Pretty * Doc updates for Google Adapter (#249) * - Initial Alexa adapter refactor to adopt Alexa.Net - Moved towards deprecating the AlexaHttpAdapter (kept for backwards compat) * - Updated Directory Build Props to include StyleCop package - Enable warnings as errors for Alexa project * - Added attachment types for directives / cards etc. - Updated content extension methods to use Alexa.NET and attachments model - Updated some core adapter logic * - Added support for Directives - Updated logic to use attachments as opposed to TurnState - Further adapter logic updates * Update GitVersion tag for feature branches * - Moved method for stylecop * Update GitVersion to attempt to ensure package names are incremented correctly on each build. * Updated package dependencies for Alexa adapter * Updated Alexa Sample * Update readme for preview package * Amended middleware and adaper for skills support * Updates following PR feedback * Removed ContinueConversationAsync overload not available until SDK 4.7. Will be re-added later for skills support. * Add LaunchRequest -> ConversationUpdate logic to middleware as per @pavolum's idea. * Added message activity concat and suggested actions conversion to google adapter * Adding configurable flag which will inform the adapter if it should concat multiple text activities in one turn * minor clean up * removing google adapter changes, renaming functions, removing suggested action conversion * Remove unused option * - Some naming tweaks - Added policy for handling multiple outgoing activities. - Added ContinueConversationAsync method * Move multiple activity policy enum out of options class * Naming tweak for outgoing activity policy * First iteration on Google refactor * Refactor of Google Adapter * Update samples for Alexa / Google * Update Google Adapter Sample * Update Google adapter to send conversation update activity when user initiates conversation without intent. * Updated readme and sample to use latest preview * Fix image links in readme. * Another attempt to fix images * Further image link fix * Update README.md * Update README.md * Update README.md * Image extension case fix * Update README.md * Updated response content type * Update Startup.cs * Update docs and add automatic end of session when no outgoing activities are sent * Readme update * Change default concat policy. Update readme. * Changes following code review (#195) * Move the activities list to within the turn context * Update adapter to make activity processing method virtual and remove multiple activity policy. Improved concat logic. * Update Google adapter with latest changes to mirror the Alexa adapter * Fix speak concat bug * Fix speak concat issue * Add first Alexa tests * Update README.md * Update README.md * Update Bot Builder NuGet references * Updates to Alexa Adapter to pull out core package with request / activity transform logic, attachment types and context extension methods. * Fix failing test * Updates to move middleware into adapter. Rename helper to AlexaRequestMapper * Further refinements of mapper * Update AlexaRequestMapperOptions.cs * Updates to mapper / options * Add Alexa Auth Handler. (#204) * Rename some methods on Alexa Mapper. Update NuGet packages to 4.8. * Rename auth handler class name * Removing old Alexa auth handler * Fix test project dependencies * Update Alexa Core project file * Amend pipeline to try and resolve dotnet pack issue * Remvoed and re-added Alexa projects to SLN * Attempt to address issue with GitVersion env vars no longer shared across pipeline tasks * Update pipeline * Update Auth Handler (#205) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Fix bug with not handling built in StopIntent * Add virtual to auth methods (#209) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. Co-authored-by: Gary Pretty * Add fallback support for Alexa request types => EventActivity * Add a simple markdown to plain text converter (#210) * Add Alexa Auth Handler. * Fix crazyness in merge. * again. * Add Alexa Skill Id validation check. * Tabs to spaces * Add a couple tests. * Separate skill id check. * Set ExpectReplies and add more tests. * Dont NRE when activities is null. * Make methods virutal for mocking * Add check for Request being null so we don't throw NRE on bad requests from Alexa. * Add simple markdown formatter Co-authored-by: Gary Pretty * Update attachment implementation (#213) * Update attachment implementation to align with BF SDK and work correctly with ABS. * Added tests for new attachment implementation * Moved text normalization logic earlier and amended markdown handling (#212) * Moved logic for text normalization earlier in the pipeline into the MergeActivities method. * Modified markdown renderer to use period instead of new line. Amended list rendering. Added tests. Changed default to markdown. * Convert Alexa attachment types to their strong type if needed. (#214) * Update utility naming to helpers (aligns with SDK / other adapters). (#216) * Merge attachments in activities so they are available in the last message (#217) * Merge attachments in activities so they are available in the last message. * Fix attachments. * Fix for attachment null property handling * Update attachment tests * Remove test for missing attachment properties. Attachments / directives have optional properties, so not all properties will always be present. * Fix tests failing with equality of ref types * Project file with additional NuGet dependency Co-authored-by: Gary Pretty * Updated the media files (#218) As Action SDK has been changed to Assistant SDK therefore I have updated them * Fixed typo & added .json to package file (#219) * Update Alexa sample to use latest preview package. Fix assembly name causing Azure deployment issue. Updated sample attachment config. * WIP on Google sync with current Alexa approach * Sync google with current alexa approach WIP * Further project factoring * Further refactoring. Split out conversations / dialogflow into separate request mappers. * Update to Google adapter WIP - addressing anonymous user id and removing attachment processing temporarily. * WIP * Significant updates to include Google specific attachment types for system intents and cards * Refactor RequestToActivity and add card / intent factories * Align DialogFlow mapper with Conversation Webhook - derive both from new abstract base class. * Implemented feedback following review * Updated Google Adapter Readme. Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Arafat Tehsin * Update README.md Co-authored-by: Jamie D Co-authored-by: martinoss Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alex ln Co-authored-by: Arafat Tehsin Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Nick Ericson Co-authored-by: Michael Richardson <40401643+mdrichardson@users.noreply.github.com> Co-authored-by: Sébastien BIAUDET Co-authored-by: Sébastien BIAUDET Co-authored-by: Jamie D Co-authored-by: martinoss Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alex ln Co-authored-by: Arafat Tehsin Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Nick Ericson Co-authored-by: Michael Richardson <40401643+mdrichardson@users.noreply.github.com> Co-authored-by: Sébastien BIAUDET Co-authored-by: Sébastien BIAUDET * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Fixed a small typo * Fix for Google validation which prevented a user from disabling checks (#253) * Further google request validation fix (#255) * Fix for Google validation which prevented a user from disabling checks * Further fix for Google request validation Co-authored-by: Jamie D Co-authored-by: martinoss Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alex ln Co-authored-by: Arafat Tehsin Co-authored-by: Patrick Volum Co-authored-by: Nick Ericson Co-authored-by: Nick Ericson Co-authored-by: Michael Richardson <40401643+mdrichardson@users.noreply.github.com> Co-authored-by: Sébastien BIAUDET Co-authored-by: Sébastien BIAUDET --- .../ConversationRequestMapper.cs | 2 +- .../DialogFlowRequestMapper.cs | 2 +- .../GoogleAuthorizationHandler.cs | 9 +++-- .../GoogleRequestMapperBase.cs | 2 +- .../Helpers/Extensions.cs | 33 ------------------- .../ConversationWebhookRequestSchema.cs | 2 +- .../Response/ConversationWebhookResponse.cs | 2 +- .../Model/Response/ResponsePayload.cs | 2 +- .../GoogleAdapter.cs | 28 ++++++++++------ .../GoogleAdapterOptions.cs | 1 + 10 files changed, 32 insertions(+), 51 deletions(-) delete mode 100644 libraries/Bot.Builder.Community.Adapters.Google.Core/Helpers/Extensions.cs diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/ConversationRequestMapper.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/ConversationRequestMapper.cs index 158e47de..9de68e41 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/ConversationRequestMapper.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/ConversationRequestMapper.cs @@ -57,7 +57,7 @@ public Activity RequestToActivity(ConversationRequest request) { activity.Type = ActivityTypes.ConversationUpdate; activity = SetGeneralActivityProperties(activity, request); - activity.MembersAdded = new List() { new ChannelAccount() { Id = activity.From.Id } }; + activity.MembersAdded = new List() { new ChannelAccount() { Id = activity.From?.Id ?? "anonymous" } }; return activity; } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/DialogFlowRequestMapper.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/DialogFlowRequestMapper.cs index b307dffa..44cc6c0f 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/DialogFlowRequestMapper.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/DialogFlowRequestMapper.cs @@ -33,7 +33,7 @@ public Activity RequestToActivity(DialogFlowRequest request) if (string.IsNullOrEmpty(queryText) || request.QueryResult.Intent.DisplayName.ToLowerInvariant() == "launch") { activity.Type = ActivityTypes.ConversationUpdate; - activity.MembersAdded = new List() { new ChannelAccount() { Id = activity.From.Id } }; + activity.MembersAdded = new List() { new ChannelAccount() { Id = activity.From?.Id ?? "anonymous" } }; return activity; } activity.Type = ActivityTypes.Message; diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleAuthorizationHandler.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleAuthorizationHandler.cs index 8e4d7d4b..ca057690 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleAuthorizationHandler.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleAuthorizationHandler.cs @@ -18,12 +18,17 @@ public GoogleAuthorizationHandler(ILogger logger) _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } - public static bool ValidateActionProjectId(string authorizationHeader, string actionProjectId) + public static bool ValidateActionProjectId(string authorizationHeader, string authorizationValue) { + if (authorizationHeader == authorizationValue) + { + return true; + } + var payload = new JwtBuilder().Decode(authorizationHeader); var payloadJObj = JObject.Parse(payload); var aud = (string)payloadJObj["aud"]; - return aud.ToLowerInvariant() == actionProjectId.ToLowerInvariant(); + return aud.ToLowerInvariant() == authorizationValue.ToLowerInvariant(); } } } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleRequestMapperBase.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleRequestMapperBase.cs index 8705a4d9..1bceeed0 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleRequestMapperBase.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/GoogleRequestMapperBase.cs @@ -34,7 +34,7 @@ public Activity SetGeneralActivityProperties(Activity activity, ConversationRequ activity.ServiceUrl = Options.ServiceUrl; activity.Recipient = new ChannelAccount("", "action"); activity.Conversation = new ConversationAccount(false, id: $"{request.Conversation.ConversationId}"); - activity.From = new ChannelAccount(request.GetUserIdFromUserStorage()); + activity.From = null;//new ChannelAccount(request.GetUserIdFromUserStorage()); activity.Id = Guid.NewGuid().ToString(); activity.Timestamp = DateTime.UtcNow; activity.Locale = request.User.Locale; diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Helpers/Extensions.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Helpers/Extensions.cs deleted file mode 100644 index 514dff82..00000000 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/Helpers/Extensions.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using Bot.Builder.Community.Adapters.Google.Core.Model; -using Bot.Builder.Community.Adapters.Google.Core.Model.Request; -using Newtonsoft.Json.Linq; - -namespace Bot.Builder.Community.Adapters.Google.Core.Helpers -{ - public static class Extensions - { - public static void EnsureUniqueUserIdInUserStorage(this ConversationRequest conversationRequest) - { - if (conversationRequest.User.UserStorage == null || !conversationRequest.User.UserStorage.ContainsKey("UserId")) - { - if (conversationRequest.User.UserStorage == null) - { - conversationRequest.User.UserStorage = new JObject(); - } - - conversationRequest.User.UserStorage.Add("UserId", Guid.NewGuid().ToString()); - } - } - - public static string GetUserIdFromUserStorage(this ConversationRequest payload) - { - if (payload.User.UserStorage != null && payload.User.UserStorage.ContainsKey("UserId")) - { - return payload.User.UserStorage["UserId"].ToString(); - } - - return null; - } - } -} 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 9bd1d98c..d39f59dd 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 @@ -95,7 +95,7 @@ public class User public DateTime LastSeen { get; set; } - public JObject UserStorage { get; set; } + public object UserStorage { get; set; } public PackageEntitlement[] PackageEntitlements { get; set; } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/ConversationWebhookResponse.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/ConversationWebhookResponse.cs index 8dff7d42..009d2b49 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/ConversationWebhookResponse.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/ConversationWebhookResponse.cs @@ -6,7 +6,7 @@ namespace Bot.Builder.Community.Adapters.Google.Core.Model.Response public class ConversationWebhookResponse { public string ConversationToken { get; set; } - public JObject UserStorage { get; set; } + public object UserStorage { get; set; } public bool? ResetUserStorage { get; set; } public bool ExpectUserResponse { get; set; } public ExpectedInput[] ExpectedInputs { get; set; } diff --git a/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/ResponsePayload.cs b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/ResponsePayload.cs index c54b5d06..fed1ea60 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/ResponsePayload.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google.Core/Model/Response/ResponsePayload.cs @@ -13,6 +13,6 @@ public class PayloadContent public bool ExpectUserResponse { get; set; } public RichResponse RichResponse { get; set; } public DialogFlowSystemIntent SystemIntent { get; set; } - public JObject UserStorage { get; set; } + public object UserStorage { get; set; } } } \ No newline at end of file diff --git a/libraries/Bot.Builder.Community.Adapters.Google/GoogleAdapter.cs b/libraries/Bot.Builder.Community.Adapters.Google/GoogleAdapter.cs index 6629a620..b3bfc8c4 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google/GoogleAdapter.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google/GoogleAdapter.cs @@ -65,11 +65,11 @@ public async Task ProcessAsync(HttpRequest httpRequest, HttpResponse httpRespons { if (!GoogleAuthorizationHandler.ValidateActionProjectId( httpRequest.Headers["Authorization"], - _options.ActionProjectId)) + _options.WebhookType == GoogleWebhookType.Conversation ? _options.ActionProjectId : _options.DialogFlowAuthorizationHeader)) { _logger.LogError("Failed to validate incoming request. Project ID in authentication header did not match project ID in GoogleAdapterOptions."); throw new AuthenticationException( - "Failed to validate incoming request. Project ID in authentication header did not match project ID in AlexaAdapterOptions"); + "Failed to validate incoming request. Project ID in authentication header did not match project ID in GoogleAdapterOptions"); } } @@ -86,7 +86,7 @@ public async Task ProcessAsync(HttpRequest httpRequest, HttpResponse httpRespons { var dialogFlowRequest = JsonConvert.DeserializeObject(body); var requestMapper = new DialogFlowRequestMapper(_requestMapperOptions, _logger); - dialogFlowRequest.OriginalDetectIntentRequest.Payload.EnsureUniqueUserIdInUserStorage(); + //dialogFlowRequest.OriginalDetectIntentRequest.Payload.EnsureUniqueUserIdInUserStorage(); activity = requestMapper.RequestToActivity(dialogFlowRequest); var context = await CreateContextAndRunPipelineAsync(bot, cancellationToken, activity); var response = requestMapper.ActivityToResponse(ProcessOutgoingActivities(context.SentActivities), dialogFlowRequest); @@ -94,13 +94,21 @@ public async Task ProcessAsync(HttpRequest httpRequest, HttpResponse httpRespons } else { - var conversationRequest = JsonConvert.DeserializeObject(body); - var requestMapper = new ConversationRequestMapper(_requestMapperOptions, _logger); - conversationRequest.EnsureUniqueUserIdInUserStorage(); - activity = requestMapper.RequestToActivity(conversationRequest); - var context = await CreateContextAndRunPipelineAsync(bot, cancellationToken, activity); - var response = requestMapper.ActivityToResponse(ProcessOutgoingActivities(context.SentActivities), conversationRequest); - responseJson = JsonConvert.SerializeObject(response, JsonSerializerSettings); + try + { + var conversationRequest = JsonConvert.DeserializeObject(body); + var requestMapper = new ConversationRequestMapper(_requestMapperOptions, _logger); + //conversationRequest.EnsureUniqueUserIdInUserStorage(); + activity = requestMapper.RequestToActivity(conversationRequest); + var context = await CreateContextAndRunPipelineAsync(bot, cancellationToken, activity); + var response = requestMapper.ActivityToResponse(ProcessOutgoingActivities(context.SentActivities), conversationRequest); + responseJson = JsonConvert.SerializeObject(response, JsonSerializerSettings); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } } httpResponse.ContentType = "application/json;charset=utf-8"; diff --git a/libraries/Bot.Builder.Community.Adapters.Google/GoogleAdapterOptions.cs b/libraries/Bot.Builder.Community.Adapters.Google/GoogleAdapterOptions.cs index 00c16f3e..f81ca517 100644 --- a/libraries/Bot.Builder.Community.Adapters.Google/GoogleAdapterOptions.cs +++ b/libraries/Bot.Builder.Community.Adapters.Google/GoogleAdapterOptions.cs @@ -13,5 +13,6 @@ public class GoogleAdapterOptions public string ActionProjectId { get; set; } public bool ValidateIncomingRequests { get; set; } = true; + public string DialogFlowAuthorizationHeader { get; set; } } }