53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import type { VoiceCallConfig } from "./config.js";
|
|
|
|
export function createVoiceCallBaseConfig(params?: {
|
|
provider?: "telnyx" | "twilio" | "plivo" | "mock";
|
|
tunnelProvider?: "none" | "ngrok";
|
|
}): VoiceCallConfig {
|
|
return {
|
|
enabled: true,
|
|
provider: params?.provider ?? "mock",
|
|
fromNumber: "+15550001234",
|
|
inboundPolicy: "disabled",
|
|
allowFrom: [],
|
|
outbound: { defaultMode: "notify", notifyHangupDelaySec: 3 },
|
|
maxDurationSeconds: 300,
|
|
staleCallReaperSeconds: 600,
|
|
silenceTimeoutMs: 800,
|
|
transcriptTimeoutMs: 180000,
|
|
ringTimeoutMs: 30000,
|
|
maxConcurrentCalls: 1,
|
|
serve: { port: 3334, bind: "127.0.0.1", path: "/voice/webhook" },
|
|
tailscale: { mode: "off", path: "/voice/webhook" },
|
|
tunnel: {
|
|
provider: params?.tunnelProvider ?? "none",
|
|
allowNgrokFreeTierLoopbackBypass: false,
|
|
},
|
|
webhookSecurity: {
|
|
allowedHosts: [],
|
|
trustForwardingHeaders: false,
|
|
trustedProxyIPs: [],
|
|
},
|
|
streaming: {
|
|
enabled: false,
|
|
sttProvider: "openai-realtime",
|
|
sttModel: "gpt-4o-transcribe",
|
|
silenceDurationMs: 800,
|
|
vadThreshold: 0.5,
|
|
streamPath: "/voice/stream",
|
|
preStartTimeoutMs: 5000,
|
|
maxPendingConnections: 32,
|
|
maxPendingConnectionsPerIp: 4,
|
|
maxConnections: 128,
|
|
},
|
|
skipSignatureVerification: false,
|
|
stt: { provider: "openai", model: "whisper-1" },
|
|
tts: {
|
|
provider: "openai",
|
|
openai: { model: "gpt-4o-mini-tts", voice: "coral" },
|
|
},
|
|
responseModel: "openai/gpt-4o-mini",
|
|
responseTimeoutMs: 30000,
|
|
};
|
|
}
|