import os import logging from aiohttp import web from botbuilder.core import ( BotFrameworkAdapterSettings, ConversationState, MemoryStorage, UserState, ) from botbuilder.integration.aiohttp import BotFrameworkHttpAdapter from botbuilder.schema import Activity from dotenv import load_dotenv from utils import show_privacy_consent from universal_reasoning import UniversalReasoning, load_json_config from mybot import MyBot # Import updated MyBot class from main_dialog import MainDialog # Load environment variables from .env file load_dotenv() # Configure logging logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" ) # Show privacy consent dialog and check user response if not show_privacy_consent(): logging.info("User declined data collection and privacy policy. Exiting application.") exit() # Load configuration config = load_json_config("config.json") config["azure_openai_api_key"] = os.getenv("AZURE_OPENAI_API_KEY") config["azure_openai_endpoint"] = os.getenv("AZURE_OPENAI_ENDPOINT") # Initialize UniversalReasoning universal_reasoning = UniversalReasoning(config) # Create adapter settings = BotFrameworkAdapterSettings( app_id=os.getenv("MICROSOFT_APP_ID"), app_password=os.getenv("MICROSOFT_APP_PASSWORD"), ) adapter = BotFrameworkHttpAdapter(settings) # Create MemoryStorage, ConversationState, and UserState memory_storage = MemoryStorage() conversation_state = ConversationState(memory_storage) user_state = UserState(memory_storage) # Create the main dialog main_dialog = MainDialog("MainDialog") # Create the bot and pass the universal_reasoning instance bot = MyBot(conversation_state, user_state, main_dialog, universal_reasoning) # Listen for incoming requests on /api/messages async def messages(req): body = await req.json() activity = Activity().deserialize(body) auth_header = req.headers.get("Authorization", "") response = await adapter.process_activity(activity, auth_header, bot.on_turn) return web.Response(status=response.status) app = web.Application() app.router.add_post("/api/messages", messages) if __name__ == "__main__": web.run_app(app, host="localhost", port=3978)