allow api_key assignment to occur after imports
This commit is contained in:
parent
41096377d5
commit
d1118d375e
9 changed files with 43 additions and 60 deletions
|
|
@ -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")
|
||||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue