diff options
| author | Ilan Bigio <ilan@openai.com> | 2024-12-30 11:38:04 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-30 11:38:04 -0500 |
| commit | 4e9f754f6349fd6ecb82c2f35e66691268cdf11d (patch) | |
| tree | 76f552097672702c6305bd041475d34132799a9f /websocket-server/src | |
| parent | 80bd1166f00871622890c8c3072d0890d6405829 (diff) | |
| parent | f65c5b74e2fe8448264d58ee40d390398b708cca (diff) | |
fix: openai env instantiation
Diffstat (limited to 'websocket-server/src')
| -rw-r--r-- | websocket-server/src/server.ts | 8 | ||||
| -rw-r--r-- | websocket-server/src/sessionManager.ts | 11 |
2 files changed, 13 insertions, 6 deletions
diff --git a/websocket-server/src/server.ts b/websocket-server/src/server.ts index 8ab3ea6..7528697 100644 --- a/websocket-server/src/server.ts +++ b/websocket-server/src/server.ts @@ -16,6 +16,12 @@ dotenv.config(); const PORT = parseInt(process.env.PORT || "8081", 10); const PUBLIC_URL = process.env.PUBLIC_URL || ""; +const OPENAI_API_KEY = process.env.OPENAI_API_KEY || ""; + +if (!OPENAI_API_KEY) { + console.error("OPENAI_API_KEY environment variable is required"); + process.exit(1); +} const app = express(); app.use(cors()); @@ -62,7 +68,7 @@ wss.on("connection", (ws: WebSocket, req: IncomingMessage) => { if (type === "call") { if (currentCall) currentCall.close(); currentCall = ws; - handleCallConnection(currentCall); + handleCallConnection(currentCall, OPENAI_API_KEY); } else if (type === "logs") { if (currentLogs) currentLogs.close(); currentLogs = ws; diff --git a/websocket-server/src/sessionManager.ts b/websocket-server/src/sessionManager.ts index 7cf6336..16a2276 100644 --- a/websocket-server/src/sessionManager.ts +++ b/websocket-server/src/sessionManager.ts @@ -1,8 +1,6 @@ import { RawData, WebSocket } from "ws"; import functions from "./functionHandlers"; -const OPENAI_API_KEY = process.env.OPENAI_API_KEY || ""; - interface Session { twilioConn?: WebSocket; frontendConn?: WebSocket; @@ -12,13 +10,15 @@ interface Session { lastAssistantItem?: string; responseStartTimestamp?: number; latestMediaTimestamp?: number; + openAIApiKey?: string; } let session: Session = {}; -export function handleCallConnection(ws: WebSocket) { +export function handleCallConnection(ws: WebSocket, openAIApiKey: string) { cleanupConnection(session.twilioConn); session.twilioConn = ws; + session.openAIApiKey = openAIApiKey; ws.on("message", handleTwilioMessage); ws.on("error", ws.close); @@ -116,14 +116,15 @@ function handleFrontendMessage(data: RawData) { } function tryConnectModel() { - if (!session.twilioConn || !session.streamSid) return; + if (!session.twilioConn || !session.streamSid || !session.openAIApiKey) + return; if (isOpen(session.modelConn)) return; session.modelConn = new WebSocket( "wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17", { headers: { - Authorization: `Bearer ${OPENAI_API_KEY}`, + Authorization: `Bearer ${session.openAIApiKey}`, "OpenAI-Beta": "realtime=v1", }, } |
