allow api_key assignment to occur after imports

This commit is contained in:
Ajay Raj 2023-03-20 10:49:20 -07:00
commit d1118d375e
9 changed files with 43 additions and 60 deletions

View file

@ -4,4 +4,4 @@ from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("VOCODE_API_KEY")
BASE_URL = os.getenv("VOCODE_BASE_URL", "api.vocode.dev")
base_url = os.getenv("VOCODE_BASE_URL", "api.vocode.dev")

View file

@ -7,19 +7,16 @@ import os
import logging
import threading
import queue
import vocode
from vocode.input_device.base_input_device import BaseInputDevice
from vocode.output_device.base_output_device import BaseOutputDevice
from vocode.models.transcriber import TranscriberConfig
from vocode.models.agent import AgentConfig
from vocode.models.synthesizer import SynthesizerConfig
from vocode.models.websocket import ReadyMessage, AudioMessage, StartMessage, StopMessage
load_dotenv()
from .input_device.base_input_device import BaseInputDevice
from .output_device.base_output_device import BaseOutputDevice
from .models.transcriber import TranscriberConfig
from .models.agent import AgentConfig
from .models.synthesizer import SynthesizerConfig
from .models.websocket import ReadyMessage, AudioMessage, StartMessage, StopMessage
from . import api_key, BASE_URL
VOCODE_WEBSOCKET_URL = f"wss://{BASE_URL}/conversation"
class Conversation:
def __init__(
self,
@ -41,6 +38,7 @@ class Conversation:
self.active = True
self.output_loop = asyncio.new_event_loop()
self.output_audio_queue = queue.Queue()
self.vocode_websocket_url = f"wss://{vocode.base_url}/conversation"
async def wait_for_ready(self):
while not self.receiver_ready:
@ -63,7 +61,7 @@ class Conversation:
loop.run_until_complete(run())
async def start(self):
async with websockets.connect(f"{VOCODE_WEBSOCKET_URL}?key={api_key}") as ws:
async with websockets.connect(f"{self.vocode_websocket_url}?key={vocode.api_key}") as ws:
async def sender(ws: WebSocketClientProtocol):
start_message = StartMessage(

View file

@ -2,17 +2,12 @@ from fastapi import FastAPI, Response, Form
from typing import Optional
import requests
import uvicorn
from vocode.models.synthesizer import SynthesizerConfig
from twilio.jwt.access_token.grants import VoiceGrant
import vocode
from vocode.models.transcriber import TranscriberConfig
from .. import api_key, BASE_URL
from ..models.agent import AgentConfig
from ..models.telephony import CreateInboundCall, TwilioConfig, TwilioConfig
VOCODE_INBOUND_CALL_URL = f"https://{BASE_URL}/create_inbound_call"
from vocode.models.synthesizer import SynthesizerConfig
from vocode.models.agent import AgentConfig
from vocode.models.telephony import CreateInboundCall, TwilioConfig, TwilioConfig
class InboundCallServer:
def __init__(
@ -33,11 +28,12 @@ class InboundCallServer:
or "The line is really busy right now, check back later!"
)
self.twilio_config = twilio_config
self.vocode_inbound_call_url = f"https://{vocode.base_url}/create_inbound_call"
async def handle_call(self, twilio_sid: str = Form(alias="CallSid")):
response = requests.post(
VOCODE_INBOUND_CALL_URL,
headers={"Authorization": f"Bearer {api_key}"},
self.vocode_inbound_call_url,
headers={"Authorization": f"Bearer {vocode.api_key}"},
json=CreateInboundCall(
agent_config=self.agent_config,
twilio_sid=twilio_sid,

View file

@ -1,4 +1,7 @@
from typing import Optional
import requests
import vocode
from vocode.models.agent import AgentConfig
from vocode.models.synthesizer import SynthesizerConfig
from vocode.models.transcriber import TranscriberConfig
@ -8,14 +11,6 @@ from ..models.telephony import (
EndOutboundCall,
TwilioConfig,
)
import requests
from .. import api_key, BASE_URL
from twilio.jwt.access_token.grants import VoiceGrant
VOCODE_CREATE_OUTBOUND_CALL_URL = f"https://{BASE_URL}/create_outbound_call"
VOCODE_END_OUTBOUND_CALL_URL = f"https://{BASE_URL}/end_outbound_call"
class OutboundCall:
@ -36,11 +31,13 @@ class OutboundCall:
self.synthesizer_config = synthesizer_config
self.conversation_id = conversation_id
self.twilio_config = twilio_config
self.vocode_create_outbound_call_url = f"https://{vocode.base_url}/create_outbound_call"
self.vocode_end_outbound_call_url = f"https://{vocode.base_url}/end_outbound_call"
def start(self) -> str:
response = requests.post(
VOCODE_CREATE_OUTBOUND_CALL_URL,
headers={"Authorization": f"Bearer {api_key}"},
self.vocode_create_outbound_call_url,
headers={"Authorization": f"Bearer {vocode.api_key}"},
json=CreateOutboundCall(
recipient=self.recipient,
caller=self.caller,
@ -57,8 +54,8 @@ class OutboundCall:
def end(self) -> str:
response = requests.post(
VOCODE_END_OUTBOUND_CALL_URL,
headers={"Authorization": f"Bearer {api_key}"},
self.vocode_end_outbound_call_url,
headers={"Authorization": f"Bearer {vocode.api_key}"},
json=EndOutboundCall(
call_id=self.conversation_id,
twilio_config=self.twilio_config,

View file

@ -1,17 +1,16 @@
from typing import Optional
import requests
import vocode
from vocode.models.agent import AgentConfig
from vocode.models.synthesizer import SynthesizerConfig
from vocode.models.transcriber import TranscriberConfig
from vocode.telephony.outbound_call import OutboundCall
from ..models.telephony import (
from vocode.models.telephony import (
CallEntity,
DialIntoZoomCall,
TwilioConfig,
)
import requests
from .. import api_key, BASE_URL
VOCODE_ZOOM_DIAL_IN_URL = f"https://{BASE_URL}/dial_into_zoom_call"
class ZoomDialIn(OutboundCall):
@ -38,11 +37,12 @@ class ZoomDialIn(OutboundCall):
)
self.zoom_meeting_id = zoom_meeting_id
self.zoom_meeting_password = zoom_meeting_password
self.vocode_zoom_dial_in_url = f"https://{vocode.base_url}/dial_into_zoom_call"
def start(self) -> str:
response = requests.post(
VOCODE_ZOOM_DIAL_IN_URL,
headers={"Authorization": f"Bearer {api_key}"},
self.vocode_zoom_dial_in_url,
headers={"Authorization": f"Bearer {vocode.api_key}"},
json=DialIntoZoomCall(
recipient=self.recipient,
caller=self.caller,