fix start recognition external file
This commit is contained in:
@@ -23,12 +23,13 @@ router = APIRouter(
|
|||||||
@router.post("/upload")
|
@router.post("/upload")
|
||||||
async def upload_external_audio(
|
async def upload_external_audio(
|
||||||
file: UploadFile = FastAPIFile(...),
|
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)
|
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)}"
|
detail=f"Error creating database record: {str(e)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Запрос на распознавание в GigaAM (файл уже в общей папке по имени safe_name)
|
# Всегда запускаем распознавание в GigaAM; callback_url передаём только если передан
|
||||||
task_id, recognition_error = send_to_recognition(filename=safe_name, callback_url=callback_url.strip())
|
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 = {
|
result = {
|
||||||
@@ -97,7 +99,7 @@ async def upload_external_audio(
|
|||||||
result["recognition_error"] = recognition_error
|
result["recognition_error"] = recognition_error
|
||||||
return result
|
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.
|
Отправка аудиофайла на распознавание в GigaAM.
|
||||||
Файл должен уже лежать в общей папке под именем filename.
|
Файл должен уже лежать в общей папке под именем filename.
|
||||||
@@ -107,9 +109,12 @@ def send_to_recognition(filename: str, callback_url: str) -> tuple:
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
gigaam_url = f"{GIGAAM_API_URL.rstrip('/')}/api/call/external/process"
|
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(
|
resp = requests.post(
|
||||||
gigaam_url,
|
gigaam_url,
|
||||||
json={"filename": filename, "callback_url": callback_url},
|
json=payload,
|
||||||
timeout=15,
|
timeout=15,
|
||||||
)
|
)
|
||||||
if resp.status_code == 202:
|
if resp.status_code == 202:
|
||||||
|
|||||||
Reference in New Issue
Block a user