Spaces:
Build error
Build error
| # Copyright (c) Microsoft Corporation. All rights reserved. | |
| # Licensed under the MIT License. | |
| from aiohttp import web | |
| from aiohttp.web import Request, Response | |
| from botframework.connector.auth import AuthenticationConfiguration, SimpleCredentialProvider | |
| from botbuilder.core.integration import aiohttp_channel_service_routes, BotFrameworkHttpClient | |
| from botbuilder.schema import Activity | |
| from config import DefaultConfig | |
| from routing_id_factory import RoutingIdFactory | |
| from routing_handler import RoutingHandler | |
| CONFIG = DefaultConfig() | |
| CREDENTIAL_PROVIDER = SimpleCredentialProvider(CONFIG.APP_ID, CONFIG.APP_PASSWORD) | |
| CLIENT = BotFrameworkHttpClient(CREDENTIAL_PROVIDER) | |
| AUTH_CONFIG = AuthenticationConfiguration() | |
| TO_URI = CONFIG.NEXT | |
| SERVICE_URL = CONFIG.SERVICE_URL | |
| FACTORY = RoutingIdFactory() | |
| ROUTING_HANDLER = RoutingHandler(FACTORY, CREDENTIAL_PROVIDER, AUTH_CONFIG) | |
| 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) | |
| inbound_activity: Activity = Activity().deserialize(body) | |
| current_conversation_id = inbound_activity.conversation.id | |
| current_service_url = inbound_activity.service_url | |
| next_conversation_id = FACTORY.create_skill_conversation_id(current_conversation_id, current_service_url) | |
| await CLIENT.post_activity(CONFIG.APP_ID, CONFIG.SKILL_APP_ID, TO_URI, SERVICE_URL, next_conversation_id, inbound_activity) | |
| return Response(status=201) | |
| APP = web.Application() | |
| APP.router.add_post("/api/messages", messages) | |
| APP.router.add_routes(aiohttp_channel_service_routes(ROUTING_HANDLER, "/api/connector")) | |
| if __name__ == "__main__": | |
| try: | |
| web.run_app(APP, host="localhost", port=CONFIG.PORT) | |
| except Exception as error: | |
| raise error | |