| 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 |