Spaces:
Sleeping
Sleeping
| from fastapi.params import Depends | |
| from loguru import logger | |
| from typing_extensions import Annotated | |
| from fastapi import APIRouter, Request | |
| from dependency_injector.wiring import inject, Provide | |
| from app.dependencies.containers import Container | |
| from app.dto.request import DialogflowWebhookRequest | |
| from app.dto.response import DialogflowResponseBuilder | |
| from app.dto.user import UserDTO | |
| from app.services.user_service import UserService | |
| from app.ner.services.ner import NER | |
| router = APIRouter(prefix="/user", tags=["User"]) | |
| def get_ner_model(request: Request) -> NER: | |
| """ | |
| Dependency to get the NER model. | |
| This can be used to inject the NER model into the endpoint. | |
| """ | |
| return request.app.state.ner | |
| async def get_user_info( | |
| request: Request, service: UserService = Depends(Provide[Container.user_service]) | |
| ): | |
| body = await request.json() | |
| body = DialogflowWebhookRequest(**body) | |
| params = body.get_parameters() | |
| user: UserDTO = await service.get_user() | |
| user_exists: bool = user is not None | |
| parameters = { | |
| "is_user_exist": user_exists, | |
| "user_name": user.user_name if user_exists else None, | |
| "phone_number": user.phone_number if user_exists else None, | |
| "email": user.email if user_exists else None, | |
| } | |
| return DialogflowResponseBuilder().set_parameters(parameters).build() | |
| async def extract_user_name( | |
| request: Request, service: UserService = Depends(Provide[Container.user_service]) | |
| ): | |
| body = await request.json() | |
| body = DialogflowWebhookRequest(**body) | |
| text = body.get_text() | |
| user_name = await service.extract_user_name(text) | |
| return DialogflowResponseBuilder().set_parameters({"user_name": user_name}).build() | |