Browse Source

webhook to site

dev
poturaevpetr 2 weeks ago
parent
commit
3930ea7021
  1. 10
      apiApp/config.py
  2. 37
      apiApp/routers/ai_conclusion_router.py

10
apiApp/config.py

@ -19,4 +19,12 @@ APP_TITLE = "Speech Analytics API"
APP_VERSION = "1.0.0" APP_VERSION = "1.0.0"
PORT = int(os.getenv("PORT", "8000")) PORT = int(os.getenv("PORT", "8000"))
HOST = os.getenv("HOST", "localhost") HOST = os.getenv("HOST", "localhost")
# Calls_WEB_Client_main Webhook Configuration
CALLS_WEB_CLIENT_URL = os.getenv(
"CALLS_WEB_CLIENT_URL",
"http://calls_web_client:8000"
)
WEBHOOK_ENDPOINT = f"{CALLS_WEB_CLIENT_URL}/api/transcription/webhook"
WEBHOOK_API_KEY = os.getenv("WEBHOOK_API_KEY", "webhook_secret_key")

37
apiApp/routers/ai_conclusion_router.py

@ -10,6 +10,8 @@ from apiApp.database.Audio import Audio
from apiApp.database.AiConclusion import AiConclusion from apiApp.database.AiConclusion import AiConclusion
from datetime import datetime from datetime import datetime
import logging import logging
import requests
from apiApp.config import WEBHOOK_ENDPOINT, WEBHOOK_API_KEY
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
ai_conclusion_router = APIRouter() ai_conclusion_router = APIRouter()
@ -91,9 +93,42 @@ async def save_ai_conclusion(request: AiConclusionRequest, db: Session = Depends
db.commit() db.commit()
logger.info(f"✅ Заключение сохранено для {request.filename}") logger.info(f"✅ Заключение сохранено для {request.filename}")
# Отправляем webhook в Calls_WEB_Client_main для анализа
try:
logger.info(f"📤 Отправка webhook в Calls_WEB_Client_main для {request.filename}")
webhook_payload = {
"audio_id": str(audio.id),
"filename": request.filename,
"transcription": request.transcription,
"corrected_transcription": request.corrected_transcription,
"segments": request.segments,
"processing_time_seconds": request.processing_time_seconds
}
webhook_response = requests.post(
WEBHOOK_ENDPOINT,
json=webhook_payload,
headers={"X-Webhook-Key": WEBHOOK_API_KEY},
timeout=30
)
if webhook_response.status_code == 200:
logger.info(f"✅ Webhook успешно отправлен для {request.filename}")
else:
logger.warning(f" Webhook вернул статус {webhook_response.status_code}")
logger.warning(f"Response: {webhook_response.text}")
except requests.exceptions.ConnectionError:
logger.error(f"❌ Не удалось подключиться к Calls_WEB_Client_main webhook: {WEBHOOK_ENDPOINT}")
except requests.exceptions.Timeout:
logger.warning(f" Таймаут при отправке webhook для {request.filename}")
except Exception as e:
logger.error(f"❌ Ошибка при отправке webhook: {e}")
return AiConclusionResponse( return AiConclusionResponse(
success=True, success=True,
message='Заключение сохранено', message='Заключение сохранено и отправлено на анализ',
audio_id=str(audio.id), audio_id=str(audio.id),
filename=request.filename filename=request.filename
) )

Loading…
Cancel
Save