| from typing import Dict, Optional, Any |
| from bot_definitions import BotType, call_transfer, simple_dialin, simple_dialout, voicemail_detection |
|
|
|
|
| class BotRegistry: |
| def __init__(self): |
| self.bots: Dict[str, BotType] = { |
| "call_transfer": call_transfer, |
| "simple_dialin": simple_dialin, |
| "simple_dialout": simple_dialout, |
| "voicemail_detection": voicemail_detection, |
| } |
|
|
| def get_bot(self, name: str) -> Optional[BotType]: |
| return self.bots.get(name) |
|
|
| def detect_bot_type(self, body: Dict[str, Any]) -> Optional[str]: |
| for bot in self.bots.values(): |
| if bot.config_key in body: |
| return bot.name |
| if all(key in body for key in ["From", "To", "callId", "callDomain"]): |
| return "call_transfer" |
| return None |
|
|
| def setup_configuration(self, config: Dict[str, Any]) -> Dict[str, Any]: |
| body = {} |
| bot_name = config.get("bot_type") |
| bot = self.get_bot(bot_name) |
| if bot: |
| body[bot.config_key] = config.get("settings", {}) |
| return body |