Skip to content

Commit eafcae9

Browse files
committed
fix(openai): apply realtime auto-response config to bridges
1 parent dd606e6 commit eafcae9

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

extensions/openai/realtime-voice-provider.test.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,6 +1060,37 @@ describe("buildOpenAIRealtimeVoiceProvider", () => {
10601060
);
10611061
});
10621062

1063+
it("applies provider-configured realtime auto-response opt-out when creating bridges", async () => {
1064+
const provider = buildOpenAIRealtimeVoiceProvider();
1065+
const bridge = provider.createBridge({
1066+
providerConfig: {
1067+
apiKey: "sk-test", // pragma: allowlist secret
1068+
autoRespondToAudio: false,
1069+
},
1070+
onAudio: vi.fn(),
1071+
onClearAudio: vi.fn(),
1072+
});
1073+
const connecting = bridge.connect();
1074+
const socket = FakeWebSocket.instances[0];
1075+
if (!socket) {
1076+
throw new Error("expected bridge to create a websocket");
1077+
}
1078+
1079+
socket.readyState = FakeWebSocket.OPEN;
1080+
socket.emit("open");
1081+
socket.emit("message", Buffer.from(JSON.stringify({ type: "session.updated" })));
1082+
await connecting;
1083+
1084+
expectRecordFields(
1085+
requireNestedRecord(requireSession(socket), ["audio", "input", "turn_detection"]),
1086+
"turn detection",
1087+
{
1088+
create_response: false,
1089+
interrupt_response: false,
1090+
},
1091+
);
1092+
});
1093+
10631094
it("can disable realtime response interruption while keeping audio responses enabled", async () => {
10641095
const provider = buildOpenAIRealtimeVoiceProvider();
10651096
const bridge = provider.createBridge({

extensions/openai/realtime-voice-provider.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,6 +1475,7 @@ export function buildOpenAIRealtimeVoiceProvider(): RealtimeVoiceProviderPlugin
14751475
vadThreshold: config.vadThreshold,
14761476
silenceDurationMs: config.silenceDurationMs,
14771477
prefixPaddingMs: config.prefixPaddingMs,
1478+
autoRespondToAudio: req.autoRespondToAudio ?? config.autoRespondToAudio,
14781479
interruptResponseOnInputAudio:
14791480
req.interruptResponseOnInputAudio ?? config.interruptResponseOnInputAudio,
14801481
minBargeInAudioEndMs: config.minBargeInAudioEndMs,

0 commit comments

Comments
 (0)