diff --git a/talkingq-url/banban/service/im.py b/talkingq-url/banban/service/im.py index 72cf2da..fa69068 100644 --- a/talkingq-url/banban/service/im.py +++ b/talkingq-url/banban/service/im.py @@ -4,11 +4,11 @@ import json from collections.abc import Mapping from pathlib import Path from typing import Any - +from services.offline_audio_cache import offline_audio_cache from fastapi import HTTPException from services.database_service_base import DatabaseServiceBase from banban.service.message_audio_storage import MessageAudioStorageService, MessageAudioStorageError - +from banban.service.binding import BindingService try: from banban.dao.im import ImDAO, DeviceIdentity, ConversationMessageCreateResult from banban.schemas.im import ( @@ -19,6 +19,9 @@ try: except ModuleNotFoundError: from banban.dao.im import ImDAO, DeviceIdentity, ConversationMessageCreateResult from banban.schemas.im import ChildConversationMessageItem, DeviceMessageCreateRequest, ParentChildMessageCreateRequest +from handlers.audio_file_handler import message_audio_storage_service +from utils.logger import session_logger + PARENT_PARTICIPANT_TYPE = 1 @@ -286,6 +289,14 @@ class ImService(DatabaseServiceBase): child_id=child_id, payload=payload, ) + binding_service = BindingService() + device = await binding_service.get_current_binding(parent_user_id) + try: + audio_url = await message_audio_storage_service.get_audio_url(stored_audio.file_key) + except Exception: + session_logger.error(device.device_id, "audio", f"failed to get audio url: {stored_audio.file_key}", exc_info=True) + audio_url = stored_audio.file_key + await offline_audio_cache.add_audio_url(device.device_id, f"{audio_url}") except Exception: try: await self.audio_storage.delete_audio(stored_audio.file_key) diff --git a/talkingq-url/handlers/mqtt_handler.py b/talkingq-url/handlers/mqtt_handler.py index 1726cd7..d7e0e30 100644 --- a/talkingq-url/handlers/mqtt_handler.py +++ b/talkingq-url/handlers/mqtt_handler.py @@ -344,7 +344,7 @@ class TalkingQMQTTService: "status": "success", "type": 0, "params": { - "url": "http://101.35.224.118:8080/assets/audio/parent_online_zh.mp3" + "url": f"http://{settings.server_host}:{settings.server_port}/assets/audio/parent_online_zh.mp3" }, } await self._publish(f"device/{device_id}/event_resp", response_payload) @@ -371,7 +371,7 @@ class TalkingQMQTTService: "status": "success", "type": 0, "params": { - "url": "http://101.35.224.118:8080/assets/audio/parent_online_zh.mp3" + "url": f"http://{settings.server_host}:{settings.server_port}/assets/audio/parent_online_zh.mp3" }, }, ) diff --git a/talkingq-url/handlers/websocket_message_handler.py b/talkingq-url/handlers/websocket_message_handler.py index 4454776..4030538 100644 --- a/talkingq-url/handlers/websocket_message_handler.py +++ b/talkingq-url/handlers/websocket_message_handler.py @@ -19,7 +19,6 @@ from handlers.prompt_sound_handler import handle_prompt_sound_request from handlers.session_cleanup_handler import handle_old_session_cleanup from config import settings from banban.service.im import im_service as im_conversation_service -from handlers.audio_file_handler import message_audio_storage_service, save_audio_file from fastapi import HTTPException async def handle_websocket_messages(websocket: WebSocket, device_id: str, serial_number: str):