open source

This commit is contained in:
Ajay Raj 2023-03-28 00:15:34 -07:00
commit a93bfc1ec9
61 changed files with 4013 additions and 126 deletions

View file

@ -0,0 +1,45 @@
from typing import Optional
import logging
from fastapi import APIRouter, HTTPException, WebSocket
from vocode.streaming.telephony.config_manager.base_config_manager import (
BaseConfigManager,
)
from vocode.streaming.telephony.conversation.call import Call
from vocode.streaming.telephony.templates import Templater
class CallsRouter:
def __init__(
self,
base_url: str,
templater: Templater,
config_manager: BaseConfigManager,
logger: Optional[logging.Logger] = None,
):
super().__init__()
self.base_url = base_url
self.templater = templater
self.config_manager = config_manager
self.logger = logger or logging.getLogger(__name__)
self.router = APIRouter()
self.router.websocket("/connect_call/{id}")(self.connect_call)
async def connect_call(self, websocket: WebSocket, id: str):
await websocket.accept()
self.logger.debug("Phone WS connection opened for chat {}".format(id))
call_config = self.config_manager.get_config(id)
if not call_config:
raise HTTPException(status_code=400, detail="No active phone call")
call: Call = Call.from_call_config(
self.base_url, call_config, self.config_manager, id, self.logger
)
await call.attach_ws_and_start(websocket)
self.config_manager.delete_config(call.id)
self.logger.debug("Phone WS connection closed for chat {}".format(id))
def get_router(self) -> APIRouter:
return self.router