diff --git a/lib/api.js b/lib/api.js index cc8f904..4cef09b 100644 --- a/lib/api.js +++ b/lib/api.js @@ -51,6 +51,14 @@ export class RealtimeAPI extends RealtimeEventHandler { return true; } + /** + * Determines if the URL is an Azure OpenAI URL + * @returns {boolean} + */ + isAzureOpenai() { + return this.url && this.url.indexOf('.azure.com') !== -1; + } + /** * Connects to Realtime API Websocket Server * @param {{model?: string}} [settings] @@ -73,11 +81,13 @@ export class RealtimeAPI extends RealtimeEventHandler { ); } const WebSocket = globalThis.WebSocket; - const ws = new WebSocket(`${this.url}${model ? `?model=${model}` : ''}`, [ - 'realtime', - `openai-insecure-api-key.${this.apiKey}`, - 'openai-beta.realtime-v1', - ]); + const ws = this.isAzureOpenai() + ? new WebSocket(`${this.url.replace('https://','wss://')}${model ? `&api-key=${this.apiKey}` : ''}`) + : new WebSocket(`${this.url}${model ? `?model=${model}` : ''}`, [ + 'realtime', + `openai-insecure-api-key.${this.apiKey}`, + 'openai-beta.realtime-v1', + ]); ws.addEventListener('message', (event) => { const message = JSON.parse(event.data); this.receive(message.type, message); diff --git a/package.json b/package.json index 0aa797b..7844294 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "@openai/realtime-api-beta", - "version": "0.0.0", - "private": true, + "name": "@theodoreniu/realtime-api-beta", + "version": "0.0.13", + "private": false, "type": "module", "description": "OpenAI Realtime API Reference Client (beta)", "main": "index.js", @@ -23,4 +23,4 @@ "dependencies": { "ws": "^8.18.0" } -} +} \ No newline at end of file