File size: 1,635 Bytes
2bd71de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import random
from typing import Dict, List


class UserSimulator:
    def __init__(self, ticket: Dict):
        self.ticket_id = ticket.get("id", "")
        self.initial_text = ticket.get("initial_text", "")
        self.clarified_text = ticket.get("clarified_text", "")
        self.trigger_phrases: List[str] = ticket.get("trigger_phrases", [])
        self.gold_faq_id = ticket.get("gold_faq_id", "")

        self.state = "initial"
        self.issue_resolved = False
        self.clarification_given = False

    def respond(self, agent_message: str) -> str:
        agent_message_lower = agent_message.lower()

        if self.state == "initial":
            if any(phrase.lower() in agent_message_lower for phrase in self.trigger_phrases):
                self.state = "clarified"
                self.clarification_given = True
                return self.clarified_text
            return random.choice(
                [
                    "I'm not sure what you mean",
                    "Can you help me?",
                    "It just stopped working",
                ]
            )

        if self.state == "clarified":
            guidance_keywords = ["try", "follow", "steps", "should", "please"]
            if any(keyword in agent_message_lower for keyword in guidance_keywords):
                self.state = "waiting_resolve"
            return "Ok I will try that, thanks"

        if self.state == "waiting_resolve":
            self.issue_resolved = True
            return "Yes that fixed it!"

        return "Can you help me?"

    def confirm_resolved(self) -> bool:
        return self.issue_resolved