Skip to content

Commit f35f158

Browse files
Merge branch 'main' into feature/s2s-mute
2 parents 14da8a4 + f3fdf3e commit f35f158

53 files changed

Lines changed: 276 additions & 79 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ Breaking changes in this release:
321321
- Text attachment and related components, in PR [#5670](https://github.com/microsoft/BotFramework-WebChat/pull/5670), by [@OEvgeny](https://github.com/OEvgeny)
322322
- (Experimental) Added custom variants support for `botframework-webchat-fluent-theme` package, in PR [#5675](https://github.com/microsoft/BotFramework-WebChat/pull/5675), by [@OEvgeny](https://github.com/OEvgeny)
323323
- Improved adaptive cards rendering in copilot variant, in PR [#5682](https://github.com/microsoft/BotFramework-WebChat/pull/5682), by [@OEvgeny](https://github.com/OEvgeny)
324+
- Bumped to [`botframework-directlinejs@0.15.8`](https://www.npmjs.com/package/botframework-directlinejs/v/0.15.8) to include support for the new `streaming` property, by [@pranavjoshi001](https://github.com/pranavjoshi001), in PR [#5686](https://github.com/microsoft/BotFramework-WebChat/pull/5686)
324325

325326
### Deprecated
326327

__tests__/html2/hooks/useCapabilities.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@
5252

5353
expect(initialVoiceConfig).toEqual({ voice: 'en-US', speed: 1.0 });
5454

55-
// TEST 2: Regular activity should NOT trigger capability re-calculation
55+
// TEST 2: Regular activity should NOT trigger capability re-fetch
5656
// Store reference to current voiceConfiguration
5757
const preActivityVoiceConfig = await renderHook(() => useCapabilities(caps => caps.voiceConfiguration));
5858

59-
// Send a regular message (not capabilitiesChanged event)
59+
// Send a regular message (capabilities only update via EventTarget, not activities)
6060
await directLine.emulateIncomingActivity({
6161
type: 'message',
6262
text: 'Hello! This is a regular message.',
@@ -69,13 +69,13 @@
6969
// Get voiceConfiguration after regular activity
7070
const postActivityVoiceConfig = await renderHook(() => useCapabilities(caps => caps.voiceConfiguration));
7171

72-
// Reference should be the same (no re-calculation for regular activities)
72+
// Reference should be the same (activities don't trigger capability re-fetch)
7373
expect(postActivityVoiceConfig).toBe(preActivityVoiceConfig);
7474

75-
// TEST 3: capabilitiesChanged event SHOULD trigger re-calculation
75+
// TEST 3: capabilitieschanged event SHOULD trigger re-fetch
7676
const preChangeVoiceConfig = await renderHook(() => useCapabilities(caps => caps.voiceConfiguration));
7777

78-
// Update capability and emit event
78+
// Update capability and dispatch capabilitieschanged event via EventTarget
7979
directLine.setCapability('getVoiceConfiguration', { voice: 'en-GB', speed: 1.5 }, { emitEvent: true });
8080

8181
// Wait for event to be processed
@@ -92,7 +92,7 @@
9292
// TEST 4: Same value should reuse reference (shallow equality check)
9393
const preNoChangeVoiceConfig = await renderHook(() => useCapabilities(caps => caps.voiceConfiguration));
9494

95-
// Set same value and emit event
95+
// Set same value and dispatch event
9696
directLine.setCapability('getVoiceConfiguration', { voice: 'en-GB', speed: 1.5 }, { emitEvent: true });
9797

9898
// Wait for event to be processed

docs/CAPABILITIES.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,18 @@ if (voiceConfig) {
2929
## How it works
3030

3131
1. **Initial fetch** - When WebChat mounts, it checks if the adapter exposes capability getter functions and retrieves initial values
32-
2. **Event-driven updates** - When the adapter emits a `capabilitiesChanged` event, WebChat re-fetches all capabilities from the adapter
32+
2. **Event-driven updates** - When the adapter dispatches a `capabilitieschanged` event, WebChat re-fetches all capabilities from the adapter
3333
3. **Optimized re-renders** - Only components consuming changed capabilities will re-render
3434

3535
## For adapter implementers
3636

37-
To expose capabilities from your adapter:
37+
To expose capabilities from your adapter, implement event listener methods and provide getter functions.
3838

39-
### 1. Implement getter functions
39+
### 1. Create an EventTarget and implement getter functions
4040

4141
```js
42+
const eventTarget = new EventTarget();
43+
4244
const adapter = {
4345
// ... other adapter methods
4446

@@ -47,21 +49,19 @@ const adapter = {
4749
sampleRate: 16000,
4850
chunkIntervalMs: 100
4951
};
50-
}
52+
},
53+
addEventListener: eventTarget.addEventListener.bind(eventTarget),
54+
removeEventListener: eventTarget.removeEventListener.bind(eventTarget)
5155
};
5256
```
5357

54-
### 2. Emit change events
58+
### 2. Dispatch change events internally
5559

56-
When capability values change, emit a `capabilitiesChanged` event activity:
60+
When capability values change, dispatch a `capabilitieschanged` event using the internal EventTarget:
5761

5862
```js
59-
// When configuration changes, emit the nudge event
60-
adapter.activity$.next({
61-
type: 'event',
62-
name: 'capabilitiesChanged',
63-
from: { id: 'bot', role: 'bot' }
64-
});
63+
// When configuration changes, dispatch the event internally
64+
eventTarget.dispatchEvent(new Event('capabilitieschanged'));
6565
```
6666

6767
WebChat will then call all capability getter functions and update consumers if values changed.

package-lock.json

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/api/src/localization/ar-SA.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"ACCESS_KEY_ALT": "Alt Shift $1",
44
"ACCESS_KEY_FOR_MAC_ALT": "Control Option $1",
55
"ACTIVITY_BOT_SAID_ALT": "قابل الروبوت $1:",
6+
"ACTIVITY_STATUS_VOICE_TRANSCRIPT_AGENT_LABEL": "العامل",
67
"ACTIVITY_YOU_SAID_ALT": "لقد قلت:",
78
"ACTIVITY_BOT_ATTACHED_ALT": "قام الروبوت بإرفاق:",
89
"ACTIVITY_CODE_ALT": "عينة التعليمات البرمجية: $1",
@@ -86,6 +87,10 @@
8687
"SUGGESTED_ACTIONS_LABEL_ALT": "الإجراءات المقترحة",
8788
"TEXT_INPUT_ALT": "مربع إدخال الرسالة",
8889
"TEXT_INPUT_PLACEHOLDER": "اكتب رسالتك",
90+
"TEXT_INPUT_SPEECH_IDLE_PLACEHOLDER": "ابدأ التحدث...",
91+
"TEXT_INPUT_SPEECH_LISTENING_PLACEHOLDER": "جارٍ الاستماع...",
92+
"TEXT_INPUT_SPEECH_PROCESSING_PLACEHOLDER": "جارٍ المعالجة...",
93+
"TEXT_INPUT_SPEECH_BOT_SPEAKING_PLACEHOLDER": "تحدّث للمقاطعة...",
8994
"TEXT_INPUT_SEND_BUTTON_ALT": "‏‏إرسال",
9095
"TEXT_INPUT_SPEAK_BUTTON_ALT": "تحدّث",
9196
"TEXT_INPUT_UPLOAD_BUTTON_ALT": "تحميل الملف",

packages/api/src/localization/bg-BG.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"ACCESS_KEY_ALT": "Alt Shift $1",
44
"ACCESS_KEY_FOR_MAC_ALT": "Control Option $1",
55
"ACTIVITY_BOT_SAID_ALT": "Бот $1 каза:",
6+
"ACTIVITY_STATUS_VOICE_TRANSCRIPT_AGENT_LABEL": "Агент",
67
"ACTIVITY_YOU_SAID_ALT": "Вие казахте:",
78
"ACTIVITY_BOT_ATTACHED_ALT": "Прикачен бот:",
89
"ACTIVITY_CODE_ALT": "Пример за код: $1",
@@ -86,6 +87,10 @@
8687
"SUGGESTED_ACTIONS_LABEL_ALT": "Предложени действия",
8788
"TEXT_INPUT_ALT": "Поле за въвеждане на съобщение",
8889
"TEXT_INPUT_PLACEHOLDER": "Въведете съобщението си",
90+
"TEXT_INPUT_SPEECH_IDLE_PLACEHOLDER": "Започнете да говорите...",
91+
"TEXT_INPUT_SPEECH_LISTENING_PLACEHOLDER": "Слушане...",
92+
"TEXT_INPUT_SPEECH_PROCESSING_PLACEHOLDER": "Обработване...",
93+
"TEXT_INPUT_SPEECH_BOT_SPEAKING_PLACEHOLDER": "Говорете, за да прекъснете",
8994
"TEXT_INPUT_SEND_BUTTON_ALT": "Изпрати",
9095
"TEXT_INPUT_SPEAK_BUTTON_ALT": "Говорете",
9196
"TEXT_INPUT_UPLOAD_BUTTON_ALT": "Качване на файл",

packages/api/src/localization/ca-ES.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"ACCESS_KEY_ALT": "Alt Maj $1",
44
"ACCESS_KEY_FOR_MAC_ALT": "Control Opció $1",
55
"ACTIVITY_BOT_SAID_ALT": "El bot $1 ha dit:",
6+
"ACTIVITY_STATUS_VOICE_TRANSCRIPT_AGENT_LABEL": "Agent",
67
"ACTIVITY_YOU_SAID_ALT": "Heu dit:",
78
"ACTIVITY_BOT_ATTACHED_ALT": "Bot adjuntat:",
89
"ACTIVITY_CODE_ALT": "Codi d'exemple: $1",
@@ -86,6 +87,10 @@
8687
"SUGGESTED_ACTIONS_LABEL_ALT": "Accions suggerides",
8788
"TEXT_INPUT_ALT": "Quadre d'entrada del missatge",
8889
"TEXT_INPUT_PLACEHOLDER": "Escriviu el missatge",
90+
"TEXT_INPUT_SPEECH_IDLE_PLACEHOLDER": "Comença a parlar...",
91+
"TEXT_INPUT_SPEECH_LISTENING_PLACEHOLDER": "Escoltant...",
92+
"TEXT_INPUT_SPEECH_PROCESSING_PLACEHOLDER": "S'està processant...",
93+
"TEXT_INPUT_SPEECH_BOT_SPEAKING_PLACEHOLDER": "Parleu per interrompre...",
8994
"TEXT_INPUT_SEND_BUTTON_ALT": "Envia",
9095
"TEXT_INPUT_SPEAK_BUTTON_ALT": "Parlar",
9196
"TEXT_INPUT_UPLOAD_BUTTON_ALT": "Carrega el fitxer",

packages/api/src/localization/cs-CZ.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"ACCESS_KEY_ALT": "Alt + Shift + $1",
44
"ACCESS_KEY_FOR_MAC_ALT": "Control + Option + $1",
55
"ACTIVITY_BOT_SAID_ALT": "Robot $1 řekl:",
6+
"ACTIVITY_STATUS_VOICE_TRANSCRIPT_AGENT_LABEL": "Agent",
67
"ACTIVITY_YOU_SAID_ALT": "Řekli jste:",
78
"ACTIVITY_BOT_ATTACHED_ALT": "Robot byl připojen:",
89
"ACTIVITY_CODE_ALT": "Ukázka kódu: $1",
@@ -86,6 +87,10 @@
8687
"SUGGESTED_ACTIONS_LABEL_ALT": "Navrhované akce",
8788
"TEXT_INPUT_ALT": "Pole pro zadání zprávy",
8889
"TEXT_INPUT_PLACEHOLDER": "Zadejte svou zprávu",
90+
"TEXT_INPUT_SPEECH_IDLE_PLACEHOLDER": "Začněte mluvit…",
91+
"TEXT_INPUT_SPEECH_LISTENING_PLACEHOLDER": "Poslouchám…",
92+
"TEXT_INPUT_SPEECH_PROCESSING_PLACEHOLDER": "Probíhá zpracování…",
93+
"TEXT_INPUT_SPEECH_BOT_SPEAKING_PLACEHOLDER": "Promluvením přerušíte…",
8994
"TEXT_INPUT_SEND_BUTTON_ALT": "Odeslat",
9095
"TEXT_INPUT_SPEAK_BUTTON_ALT": "Mluvit",
9196
"TEXT_INPUT_UPLOAD_BUTTON_ALT": "Nahrát soubor",

packages/api/src/localization/da-DK.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"ACCESS_KEY_ALT": "Alt Skift $1",
44
"ACCESS_KEY_FOR_MAC_ALT": "Control option $1",
55
"ACTIVITY_BOT_SAID_ALT": "Robotten $1 sagde:",
6+
"ACTIVITY_STATUS_VOICE_TRANSCRIPT_AGENT_LABEL": "Agent",
67
"ACTIVITY_YOU_SAID_ALT": "Du sagde:",
78
"ACTIVITY_BOT_ATTACHED_ALT": "Vedhæftet af robot:",
89
"ACTIVITY_CODE_ALT": "Kodeeksempel: $1",
@@ -86,6 +87,10 @@
8687
"SUGGESTED_ACTIONS_LABEL_ALT": "Foreslåede handlinger",
8788
"TEXT_INPUT_ALT": "Meddelelsesinputfelt",
8889
"TEXT_INPUT_PLACEHOLDER": "Skriv din meddelelse",
90+
"TEXT_INPUT_SPEECH_IDLE_PLACEHOLDER": "Begynd at tale...",
91+
"TEXT_INPUT_SPEECH_LISTENING_PLACEHOLDER": "Lytter...",
92+
"TEXT_INPUT_SPEECH_PROCESSING_PLACEHOLDER": "Behandler...",
93+
"TEXT_INPUT_SPEECH_BOT_SPEAKING_PLACEHOLDER": "Tal for at afbryde...",
8994
"TEXT_INPUT_SEND_BUTTON_ALT": "Send",
9095
"TEXT_INPUT_SPEAK_BUTTON_ALT": "Tal",
9196
"TEXT_INPUT_UPLOAD_BUTTON_ALT": "Overfør fil",

packages/api/src/localization/de-DE.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"ACCESS_KEY_ALT": "ALT UMSCHALT $1",
44
"ACCESS_KEY_FOR_MAC_ALT": "CONTROL OPTION $1",
55
"ACTIVITY_BOT_SAID_ALT": "Bot $1 sagte:",
6+
"ACTIVITY_STATUS_VOICE_TRANSCRIPT_AGENT_LABEL": "Agent",
67
"ACTIVITY_YOU_SAID_ALT": "Sie sagten:",
78
"ACTIVITY_BOT_ATTACHED_ALT": "Bot angefügt:",
89
"ACTIVITY_CODE_ALT": "Codebeispiel: $1",
@@ -86,6 +87,10 @@
8687
"SUGGESTED_ACTIONS_LABEL_ALT": "Empfohlene Aktionen",
8788
"TEXT_INPUT_ALT": "Eingabefeld für Nachricht",
8889
"TEXT_INPUT_PLACEHOLDER": "Nachricht eingeben",
90+
"TEXT_INPUT_SPEECH_IDLE_PLACEHOLDER": "Beginnen Sie zu sprechen...",
91+
"TEXT_INPUT_SPEECH_LISTENING_PLACEHOLDER": "Zuhören...",
92+
"TEXT_INPUT_SPEECH_PROCESSING_PLACEHOLDER": "Wird verarbeitet...",
93+
"TEXT_INPUT_SPEECH_BOT_SPEAKING_PLACEHOLDER": "Sprechen, um zu unterbrechen...",
8994
"TEXT_INPUT_SEND_BUTTON_ALT": "Senden",
9095
"TEXT_INPUT_SPEAK_BUTTON_ALT": "Sprechen",
9196
"TEXT_INPUT_UPLOAD_BUTTON_ALT": "Datei hochladen",

0 commit comments

Comments
 (0)