Spaces:
Build error
Build error
| # Copyright (c) Microsoft Corporation. All rights reserved. | |
| # Licensed under the MIT License. | |
| import sys | |
| import traceback | |
| from aiohttp import web | |
| from aiohttp.web import Request, Response | |
| from aiohttp.web_response import json_response | |
| from botbuilder.core import ( | |
| BotFrameworkAdapterSettings, | |
| TurnContext, | |
| BotFrameworkAdapter, | |
| ) | |
| from botbuilder.schema import Activity | |
| from bots import ChildBot | |
| from config import DefaultConfig | |
| CONFIG = DefaultConfig() | |
| # Create adapter. | |
| # See https://aka.ms/about-bot-adapter to learn more about how bots work. | |
| SETTINGS = BotFrameworkAdapterSettings( | |
| app_id=CONFIG.APP_ID, app_password=CONFIG.APP_PASSWORD, | |
| ) | |
| ADAPTER = BotFrameworkAdapter(SETTINGS) | |
| # Catch-all for errors. | |
| async def on_error(context: TurnContext, error: Exception): | |
| # This check writes out errors to console log .vs. app insights. | |
| # NOTE: In production environment, you should consider logging this to Azure | |
| # application insights. | |
| print(f"\n [on_turn_error] unhandled error: {error}", file=sys.stderr) | |
| traceback.print_exc() | |
| # Send a message to the user | |
| await context.send_activity("The bot encountered an error or bug.") | |
| await context.send_activity( | |
| "To continue to run this bot, please fix the bot source code." | |
| ) | |
| ADAPTER.on_turn_error = on_error | |
| # Create the Bot | |
| BOT = ChildBot() | |
| # Listen for incoming requests on /api/messages | |
| async def messages(req: Request) -> Response: | |
| # Main bot message handler. | |
| if "application/json" in req.headers["Content-Type"]: | |
| body = await req.json() | |
| else: | |
| return Response(status=415) | |
| activity = Activity().deserialize(body) | |
| auth_header = req.headers["Authorization"] if "Authorization" in req.headers else "" | |
| try: | |
| response = await ADAPTER.process_activity(activity, auth_header, BOT.on_turn) | |
| if response: | |
| return json_response(data=response.body, status=response.status) | |
| return Response(status=201) | |
| except Exception as exception: | |
| raise exception | |
| APP = web.Application() | |
| APP.router.add_post("/api/messages", messages) | |
| if __name__ == "__main__": | |
| try: | |
| web.run_app(APP, host="localhost", port=CONFIG.PORT) | |
| except Exception as error: | |
| raise error | |