Skip to content

Added voiceEnabled flag for Brand Concierge conversation event routing#1451

Open
MasonPinZ wants to merge 6 commits intoadobe:mainfrom
MasonPinZ:bc-edge-subpath
Open

Added voiceEnabled flag for Brand Concierge conversation event routing#1451
MasonPinZ wants to merge 6 commits intoadobe:mainfrom
MasonPinZ:bc-edge-subpath

Conversation

@MasonPinZ
Copy link

@MasonPinZ MasonPinZ commented Feb 26, 2026

Description

PR Summary

This PR adds voice-aware routing for Brand Concierge conversation requests via a boolean conversation.voiceEnabled config.

Changes included

  • Updated Brand Concierge config validation:

    • configValidators.js
    • Adds conversation.voiceEnabled as boolean with default false.
  • Added SDK-side endpoint routing logic in conversation request construction:

    • createConversationServiceRequest.js
    • voiceEnabled: true routes to /brand-concierge-voice
    • voiceEnabled: false routes to /brand-concierge
  • Wired voiceEnabled into the send-conversation flow:

    • createSendConversationEvent.js
  • Updated unit tests for the new behavior:

    • createConversationServiceRequest.spec.js
    • index.spec.js
    • Covers voiceEnabled validation, defaults, and voice/non-voice routing.

Why

Voice-enabled conversations in Brand Concierge require different routing paths from the hosting app.

Impact

  • Hosting pages can enable voice routing with:
    • conversation: { voiceEnabled: true }
  • Default behavior remains /brand-concierge when voiceEnabled is not set or is false.

Related Issue

BRANDCON-3982

Motivation and Context

Screenshots (if appropriate):

Checklist:

  • I have signed the Adobe Open Source CLA or I'm an Adobe employee.
  • I have made any necessary test changes and all tests pass.
  • I have run the Sandbox successfully.
  • I have added a Changeset (pnpm changeset) or it is not necessary because this PR is not consumer-facing.

@changeset-bot
Copy link

changeset-bot bot commented Feb 26, 2026

🦋 Changeset detected

Latest commit: 387b5b6

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@adobe/alloy Patch
@adobe/alloy-sandbox-browser Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@carterworks
Copy link
Collaborator

carterworks commented Feb 26, 2026

@MasonPinZ Do you need this option added to the Web SDK Tags extension?

Also, please run pnpm changeset and describe a patch version for @adobe/alloy package.

@MasonPinZ
Copy link
Author

Also, please run pnpm changeset and describe a patch version for @adobe/alloy package.

@carterworks thank you very much for reviewing my PR and for the comments. I've added a changeset. Please kindly check it.

@MasonPinZ Do you need this option added to the Web SDK Tags extension?

Thank you for bringing this up. To my understanding, adding this to Tags extension is mainly for exposing it on the Tags admin UI and have it automatically configured via the UI. Adobe customers can set the newly added option in the hosting page explicitly, even without us adding it to the Tags extension. Is that correct? If so, I'll prefer to have the new option added to alloy and released first, as this is with a priority. I'll confirm the priority and add it to the Tags extension later. Does it sound good?

@MasonPinZ MasonPinZ changed the title Made Brand Concierge edgeSubPath configurable Added voiceEnabled flag for Brand Concierge conversation event routing Feb 27, 2026
@MasonPinZ
Copy link
Author

@carterworks I revised this PR per team internal code review suggestions. Can you please check it again? Also please confirm my understanding of the need for Tags extension change in my previous comment. Thank you!

@carterworks
Copy link
Collaborator

@MasonPinZ If we add it to the Tags UI (see the screenshot), then customers that deploy the Web SDK via Tags will be able to configure this setting in the UI. Inclusion in the Tags UI does not prohibit anyone from configuring the library with JavaScript, or anyone that does not use Adobe Tags.
image

@MasonPinZ
Copy link
Author

@carterworks thank you very much for answering my questions! I understood the effect of adding the option to Tags extension now. Then yes, I'd like to add it to the Tags UI. Please let me know what I need to do to achieve that. Do I need to open another PR to some repo?

@MasonPinZ
Copy link
Author

Hi @carterworks , I saw there's a SonarQube check error in the PR, what does that mean? Do I need to handle it in some way?

@carterworks
Copy link
Collaborator

thank you very much for answering my questions! I understood the effect of adding the option to Tags extension now. Then yes, I'd like to add it to the Tags UI. Please let me know what I need to do to achieve that. Do I need to open another PR to some repo?

@MasonPinZ I have the code 99% percent done already (did it to make the screenshot). Just tell me what you and your team want the option text to be. The "Enable voice responses" and "Enable voice responses for Adobe Brand Concierge conversations" is just placeholder text.

I saw there's a SonarQube check error in the PR, what does that mean? Do I need to handle it in some way?

Don't worry about it. The SonarQube action is unstable.

Copy link
Contributor

@ninaceban ninaceban left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. Thank you!

Please extract the paths as constants: BRAND_CONCIERGE_PATH and VOICE_BRAND_CONCIERGE_PATH. We have a repository for demo pages, please add a page in brand-concierge/concierge-demo repo a demo page with valid configurations.

@MasonPinZ
Copy link
Author

Thank you very much, @ninaceban . Can you please approve the Tags admin UI strings too or suggest new ones?

#1451 (comment)


export default objectOf({
conversation: objectOf({
voiceEnabled: boolean().default(false),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure you want this on the extension configuration? It seems like it would be better as an option to the sendConversationEvent command.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @jonsnyder , our main goal is to use this flag to drive the conversation event routing from client app side. It's supposed to be set:

  • primarily on tenant level
  • optionally on hosting app instance level (i.e. per end user, given that the hosting app surfaces it) before conversation starts

There's no use cases where some events sent with voice enabled and some others sent without it enabled in the same conversation.

So IMO setting it on the extension configuration is the simplest way technical wise. Can you please let me know your thinking behind your suggestion? And also the design philosophy (when to use/not to use it) of extension configurations maybe? Thank you!

CC: @ninaceban

@MasonPinZ
Copy link
Author

Hi @carterworks , please find below my suggestions to the UI strings with some forward compatibility consideration:

  • "Enable voice features"
  • "Enable voice features for Adobe Brand Concierge conversations"

If @ninaceban has no other suggestions, let's use the above please.

@carterworks
Copy link
Collaborator

@MasonPinZ and @ninaceban Please review adobe/reactor-extension-alloy#601

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants