From d460728b2ebfb0217b5a21062f33d85a825b17e2 Mon Sep 17 00:00:00 2001 From: poturaevpetr Date: Wed, 18 Mar 2026 01:14:41 +0500 Subject: [PATCH] fix start recognition external file --- apiApp/routers/external_audio.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/apiApp/routers/external_audio.py b/apiApp/routers/external_audio.py index ea4ff06..d5886d1 100644 --- a/apiApp/routers/external_audio.py +++ b/apiApp/routers/external_audio.py @@ -23,12 +23,13 @@ router = APIRouter( @router.post("/upload") async def upload_external_audio( file: UploadFile = FastAPIFile(...), - callback_url: str = Form(..., description="URL для отправки результата распознавания (FileAudioAPI вызовет GigaAM и затем отправит результат на этот URL)"), + callback_url: str = Form(None, description="URL для отправки результата распознавания (опционально). Если передан — FileAudioAPI вызовет GigaAM и затем отправит результат на этот URL."), db: Session = Depends(get_db) ): """ - Загрузка внешнего аудиофайла. Файл сохраняется в общей папке, после чего - автоматически отправляется на распознавание в GigaAM. Результат придёт на callback_url. + Загрузка внешнего аудиофайла. Файл сохраняется в общей папке. + Если передан callback_url — автоматически отправляется на распознавание в GigaAM, + а результат придёт на callback_url. """ # Проверка расширения файла @@ -78,8 +79,9 @@ async def upload_external_audio( detail=f"Error creating database record: {str(e)}" ) - # Запрос на распознавание в GigaAM (файл уже в общей папке по имени safe_name) - task_id, recognition_error = send_to_recognition(filename=safe_name, callback_url=callback_url.strip()) + # Всегда запускаем распознавание в GigaAM; callback_url передаём только если передан + cb = callback_url.strip() if (callback_url and callback_url.strip()) else None + task_id, recognition_error = send_to_recognition(filename=safe_name, callback_url=cb) # Ответ: запись аудио + данные по постановке в очередь распознавания result = { @@ -97,7 +99,7 @@ async def upload_external_audio( result["recognition_error"] = recognition_error return result -def send_to_recognition(filename: str, callback_url: str) -> tuple: +def send_to_recognition(filename: str, callback_url: str | None = None) -> tuple: """ Отправка аудиофайла на распознавание в GigaAM. Файл должен уже лежать в общей папке под именем filename. @@ -107,9 +109,12 @@ def send_to_recognition(filename: str, callback_url: str) -> tuple: """ try: gigaam_url = f"{GIGAAM_API_URL.rstrip('/')}/api/call/external/process" + payload = {"filename": filename} + if callback_url: + payload["callback_url"] = callback_url resp = requests.post( gigaam_url, - json={"filename": filename, "callback_url": callback_url}, + json=payload, timeout=15, ) if resp.status_code == 202: