summaryrefslogtreecommitdiff
path: root/websocket-server/src
diff options
context:
space:
mode:
authorEvan Cater <evan.ecater@gmail.com>2024-12-21 17:03:31 -0500
committerEvan Cater <evan.ecater@gmail.com>2024-12-21 17:03:31 -0500
commitf65c5b74e2fe8448264d58ee40d390398b708cca (patch)
tree76f552097672702c6305bd041475d34132799a9f /websocket-server/src
parent80bd1166f00871622890c8c3072d0890d6405829 (diff)
fix: openai env instantiation
Diffstat (limited to 'websocket-server/src')
-rw-r--r--websocket-server/src/server.ts8
-rw-r--r--websocket-server/src/sessionManager.ts11
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",
},
}