diff --git a/api/core/app/apps/advanced_chat/app_generator.py b/api/core/app/apps/advanced_chat/app_generator.py index 610a5bb278..0a4fb32bc0 100644 --- a/api/core/app/apps/advanced_chat/app_generator.py +++ b/api/core/app/apps/advanced_chat/app_generator.py @@ -124,7 +124,7 @@ class AdvancedChatAppGenerator(MessageBasedAppGenerator): conversation_id = args.get("conversation_id") if conversation_id: conversation = ConversationService.get_conversation( - app_model=app_model, conversation_id=conversation_id, user=user + app_model=app_model, conversation_id=conversation_id, user=user,invoke_from=invoke_from ) # parse files diff --git a/api/services/conversation_service.py b/api/services/conversation_service.py index 40097d5ed5..7a3f8fc569 100644 --- a/api/services/conversation_service.py +++ b/api/services/conversation_service.py @@ -145,19 +145,32 @@ class ConversationService: return conversation @classmethod - def get_conversation(cls, app_model: App, conversation_id: str, user: Optional[Union[Account, EndUser]]): - conversation = ( - db.session.query(Conversation) - .filter( - Conversation.id == conversation_id, - Conversation.app_id == app_model.id, - Conversation.from_source == ("api" if isinstance(user, EndUser) else "console"), - Conversation.from_end_user_id == (user.id if isinstance(user, EndUser) else None), - Conversation.from_account_id == (user.id if isinstance(user, Account) else None), - Conversation.is_deleted == False, + def get_conversation(cls, app_model: App, conversation_id: str, user: Optional[Union[Account, EndUser]], invoke_from: InvokeFrom = None): + if invoke_from and invoke_from == InvokeFrom.SERVICE_API: + conversation = ( + db.session.query(Conversation) + .filter( + Conversation.id == conversation_id, + Conversation.app_id == app_model.id, + Conversation.from_source == "api", + Conversation.from_end_user_id == user.id , + Conversation.is_deleted == False, + ) + .first() + ) + else: + conversation = ( + db.session.query(Conversation) + .filter( + Conversation.id == conversation_id, + Conversation.app_id == app_model.id, + Conversation.from_source == ("api" if isinstance(user, EndUser) else "console"), + Conversation.from_end_user_id == (user.id if isinstance(user, EndUser) else None), + Conversation.from_account_id == (user.id if isinstance(user, Account) else None), + Conversation.is_deleted == False, + ) + .first() ) - .first() - ) if not conversation: raise ConversationNotExistsError()