@@ -1013,34 +1013,53 @@ def _process(self, item: dict[str, Any]) -> tuple[
10131013 _logger .info ("Running EmailAgent..." )
10141014 result = self ._email_agent .run ()
10151015
1016- # Auto-trigger DraftResponseAgent for customer inquiries
1016+ # Process each inquiry with DraftResponseAgent and append as thread replies
10171017 if self ._draft_response_agent and result :
10181018 # Extract full inquiry context from the result
10191019 import re
10201020
10211021 # Split by ===SPLIT_MESSAGE=== to get individual inquiries
10221022 inquiries = result .split ("===SPLIT_MESSAGE===" )
1023+ summary = inquiries [0 ] if inquiries else ""
1024+ processed_parts = [summary ]
1025+
10231026 for inquiry in inquiries [1 :]: # Skip the summary part
10241027 inquiry = inquiry .strip ()
10251028 if inquiry .startswith ("Customer:" ):
10261029 try :
1027- # Extract customer, question, and order details
1030+ # Extract customer, question, order details, and message_id
10281031 customer_match = re .search (r"^Customer:\s*(.+)$" , inquiry , re .MULTILINE )
10291032 question_match = re .search (r"^Question:\s*(.+)$" , inquiry , re .MULTILINE )
10301033 order_match = re .search (r"^Order Details:\s*(.+)$" , inquiry , re .MULTILINE )
1034+ message_id_match = re .search (r"^Message ID:\s*(.+)$" , inquiry , re .MULTILINE )
10311035
10321036 if customer_match :
10331037 customer = customer_match .group (1 )
10341038 question = question_match .group (1 ) if question_match else ""
10351039 order_details = order_match .group (1 ) if order_match else ""
1040+ message_id = message_id_match .group (1 ) if message_id_match else ""
10361041
1037- # Pass full context to DraftResponseAgent
1038- inquiry_context = f"Customer: { customer } \n Question: { question } \n Order: { order_details } "
1042+ # Run DraftResponseAgent
1043+ inquiry_context = f"Customer: { customer } \n Question: { question } \n Order: { order_details } \n Message ID: { message_id } "
10391044 _logger .info (f"Running DraftResponseAgent for: { customer } " )
10401045 draft_result = self ._draft_response_agent .run (inquiry_context )
10411046 _logger .info (f"DraftResponseAgent result: { draft_result } " )
1047+
1048+ # Add inquiry message
1049+ processed_parts .append (f"===SPLIT_MESSAGE===\n { inquiry } " )
1050+ # Add draft as a thread reply (marked with special delimiter)
1051+ processed_parts .append (
1052+ f"===SPLIT_MESSAGE===\n [THREAD_REPLY]\n { draft_result } "
1053+ )
10421054 except Exception as e :
10431055 _logger .error (f"DraftResponseAgent failed: { e } " )
1056+ # Keep original inquiry even if draft fails
1057+ processed_parts .append (f"===SPLIT_MESSAGE===\n { inquiry } " )
1058+ else :
1059+ processed_parts .append (f"===SPLIT_MESSAGE===\n { inquiry } " )
1060+
1061+ # Rebuild result with drafts as thread replies
1062+ result = "\n " .join (processed_parts )
10441063 else :
10451064 result = "EmailAgent not available. Google Workspace client is required."
10461065
0 commit comments