|
from typing import Dict, Any, Optional |
|
from bot_definitions import bot_registry |
|
|
|
|
|
def determine_room_capabilities(body: Dict[str, Any]) -> Dict[str, bool]: |
|
bot_type = bot_registry.detect_bot_type(body) |
|
bot = bot_registry.get_bot(bot_type) |
|
capabilities = { |
|
"enable_dialin": False, |
|
"enable_dialout": False, |
|
} |
|
if not bot: |
|
return capabilities |
|
|
|
if bot.name == "call_transfer": |
|
call_transfer_config = body.get("call_transfer", {}) |
|
capabilities["enable_dialin"] = True |
|
if call_transfer_config.get("mode") == "dialout": |
|
capabilities["enable_dialout"] = True |
|
elif bot.name == "simple_dialin": |
|
capabilities["enable_dialin"] = True |
|
elif bot.name in ["simple_dialout", "voicemail_detection"]: |
|
capabilities["enable_dialout"] = True |
|
|
|
return capabilities |
|
|
|
|
|
async def process_dialin_request(data: Dict[str, Any]) -> Dict[str, Any]: |
|
body = { |
|
"dialin_settings": { |
|
"callId": data.get("callId"), |
|
"callDomain": data.get("callDomain"), |
|
"From": data.get("From"), |
|
"To": data.get("To"), |
|
} |
|
} |
|
return body |
|
|
|
|
|
def ensure_prompt_config(body: Dict[str, Any]) -> Dict[str, Any]: |
|
if "prompts" not in body: |
|
body["prompts"] = [] |
|
return body |