Beispiel #1
0
    def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List["Event"]:

        intent_ranking = tracker.latest_message.get("intent_ranking", [])
        if len(intent_ranking) > 0:
            first_intent_names = intent_ranking[0].get("name", "")
        else:
            dispatcher.utter_message(text="let's restart.")
            dispatcher.utter_message(text="ask me a question.")
            return [Restarted()]

        print("ONE")
        # first_intent_names = [
        #     intent.get("name", "")
        #     for intent in intent_ranking
        #     if intent.get("name", "") != "out_of_scope"
        # ]

        # message_title = "Sorry, I'm not sure I've understood " "you correctly. Do you mean..."
        # print('TWO')
        # print(first_intent_names)
        # response = self.get_top_intent(first_intent_names)
        # dispatcher.utter_message(text=message_title)
        # print(response)
        # dispatcher.utter_message(text=response)

        message_title = "Could you repeat that?"
        dispatcher.utter_message(text=message_title)

        return [Restarted()]
Beispiel #2
0
    def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List[Dict]:
        raw_clean_time = tracker.get_slot("time")
        try:
            clean_time = dict(tracker.get_slot("time"))
            clean_time = clean_time['from']
        except:
            clean_time = tracker.get_slot("time")

        date = clean_time[0:10]
        time = clean_time[11:19]

        # ist = datetime.datetime.strptime(str(date) + ' ' + str(time), '%Y-%m-%d %H:%M:%S') + datetime.timedelta(hours=5, minutes=30)
        ist = datetime.datetime.strptime(
            str(date) + ' ' + str(time), '%Y-%m-%d %H:%M:%S')
        ist_now = datetime.datetime.now()

        difference = ist - ist_now
        # print(raw_clean_time)
        # print(ist)
        # print(ist_now)
        # print(difference.total_seconds())
        # print(difference.days)
        # print('===================')

        day_difference = (ist -
                          ist_now.replace(hour=0, minute=0, second=0)).days

        if difference.total_seconds() <= 60:
            dispatcher.utter_message(
                "Sure, I will send someone to your room right away.")
            return [Restarted()]

        if int(day_difference) == 0:
            formatted_time = ist.strftime("%I:%M %p")
            dispatcher.utter_message("Sure, I have scheduled a cleaning for " +
                                     str(formatted_time) + " today.")
            return [Restarted()]
        elif int(day_difference) == 1:
            formatted_time = ist.strftime("%I:%M %p")
            dispatcher.utter_message("Sure, I have scheduled a cleaning for " +
                                     str(formatted_time) + " tomorrow.")
            return [Restarted()]
        else:
            formatted_time = ist.strftime("%I:%M %p on %d %b %Y.")
            dispatcher.utter_message("Sure, I have scheduled a cleaning at " +
                                     str(formatted_time))
            return [Restarted()]
Beispiel #3
0
    def run(self, dispatcher: CollectingDispatcher, tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        lc_hottel = tracker.get_slot('lc_hottel')
        sure = tracker.get_slot('sure')
        if sure == "no":
            return [Restarted()]
        else:
            sqlht = 'select name from chatbot where stt=1 '
            dispatcher.utter_template("utter_search_hottel",
                                      tracker,
                                      sqlht=sqlht)
            return [Restarted()]
Beispiel #4
0
	def run(self,dispatcher,tracker,domain):
		contact=tracker.get_slot("contact")
		if contact is not None:
			
	
					with open('userdata.json','r') as tf:
						data = json.load(tf)
						username=data["name"]["name"]
					with open('user_data.json','r') as g:
						data = json.load(g)
						useremail=data["email"]["email"]
		
		
					dispatcher.utter_template("utter_feedbackresponse",tracker)
					s = smtplib.SMTP('smtp.gmail.com', 587) 
			  			
						# start TLS for security 
					s.starttls() 
						  
						# Authentication 
					s.login("*****@*****.**", "Absolve@Tech19##") 
						  
						# message to be sent 
					message = " DATA: {}\n\n{}\n\n{}".format(username,contact,useremail)
						
						# sending the mail 
					s.sendmail("*****@*****.**", "*****@*****.**", message) 
						  
						# terminating the session 
					s.quit()
		return[Restarted()]
    def request_next_slot(
            self,
            dispatcher,  # type: CollectingDispatcher
            tracker,  # type: Tracker
            domain,  # type: Dict[Text, Any]
    ):
        # type: (...) -> Optional[List[Dict]]
        """Request the next slot and utter template if needed,
            else return None"""
        intent = tracker.latest_message.get('intent', {}).get('name')

        if intent == 'cancel':
            dispatcher.utter_template('utter_cancel_response', tracker=tracker)
            self.pop_data_user(self.get_sender_id(tracker=tracker))
            return [Restarted()]
        else:
            for slot in self.required_slots(tracker):
                if self._should_request_slot(tracker, slot):
                    logging.debug("Request next slot '{}'".format(slot))
                    msg = self.check_slot(slot=slot,
                                          tracker=tracker,
                                          dispatcher=dispatcher)
                    if msg is not None:
                        dispatcher.utter_custom_json(msg)
                    else:
                        dispatcher.utter_template("utter_ask_{}".format(slot),
                                                  tracker=tracker,
                                                  silent_fail=False,
                                                  **tracker.slots)
                    return [SlotSet("requested_slot", slot)]
            return None
Beispiel #6
0
    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        Area_value = tracker.get_slot("location")
        user_id = tracker.sender_id
        user_text = tracker.latest_message['text']
        msg_intent = tracker.latest_message['intent'].get('name')
        msg_confidence = tracker.latest_message['intent'].get("confidence")
        print(f"text:{user_text} intent:{msg_intent} id:{user_id} confidence: {msg_confidence}")
        ##dispatcher.utter_message(str(json_resp))
        try:
            current = requests.get(
                "http://api.weatherstack.com/current?access_key=75c125199af05ff43eec804e5d0094a3&query=" + Area_value).json()

            city = current['location']['name']
            condition = current['current']['weather_descriptions']
            temperature_c = current['current']['temperature']
            humidity = current['current']['humidity']
            wind_mph = current['current']['wind_speed']
            user_text = f"It is currently {condition[0]} in {city} at the moment. The temperature is {temperature_c} degrees, the humidity is {humidity} and the wind speed is {wind_mph} mph "

        except Exception as e:
            pass
        json_resp = {"text": user_text, "intent": msg_intent, "id": user_id, "confidence": msg_confidence}
        dispatcher.utter_message(json_message=json_resp)

        return [Restarted()]
Beispiel #7
0
 def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain):
   
   message = (tracker.latest_message)['text']
   sent = [i for i in message.split(' ')]
   
   words = ["wtf",
      "WTF",
      "what the f**k",
      "what the f**k",
      "f*uck",
      "f*uck you",
      "f****r",
      "You suck",
      "I hate you",
      "idiot",
      "stfu",
      "shut the f*** up",
      "f*uk",
      "f**k",
      "f**k",
      "wtf?",
      "wtf bot",
      ]
   
   flag = 0
   for j in sent:    
     if j in words:
         flag = 1    
   if flag==1:
     
     dispatcher.utter_template('utter_out_of_context',tracker)
   else:
     dispatcher.utter_template('utter_greet',tracker)
     dispatcher.utter_template('utter_start',tracker)
     return [Restarted()]
Beispiel #8
0
 def run(self, dispatcher, tracker, domain):
     form_name = tracker.active_form.get("name")
     if form_name:
         return [FollowupAction(form_name)]
     else:
         dispatcher.utter_template("utter_default", tracker)
         return [Restarted()]
 def run(self, dispatcher, tracker, domain):
     kontrak = tracker.get_slot('nomor_kontrak')
     ktp = tracker.get_slot('nomor_ktp')
     installment = my_api.API(tracker.get_latest_input_channel()).get_api_1(kontrak=kontrak, ktp=ktp)
     if installment is not None:
         dispatcher.utter_message('Terima kasih atas ketersediaanya')
         if tracker.get_latest_input_channel() == 'facebook':
             message = {
                 "text": "Apakah Anda sudah menerima salinan dokumen kontrak Anda?",
                 "quick_replies": [
                     {
                         "content_type": "text",
                         "image_url": "https://i.ibb.co/5G023yb/eunha.jpg",
                         "title": "Ya, sudah",
                         "payload": "/konfirmasi{\"is_terima_salinan_kontrak\": true}"
                     },
                     {
                         "content_type": "text",
                         "image_url": "https://i.ibb.co/5G023yb/eunha.jpg",
                         "title": "Tidak, belum",
                         "payload": "/tolak{\"is_terima_salinan_kontrak\": false}"
                     }
                 ]
             }
             dispatcher.utter_custom_json(json_message=message)
         else:
             dispatcher.utter_template('utter_konfirmasi_salinan_dokumen_kontrak', tracker)
         return []
     else:
         SlotSet('nomor_kontrak', value=None)
         SlotSet('nomor_ktp', value=None)
         dispatcher.utter_message(f'Maaf {tracker.get_slot(BOT_NAME)} tidak menemukan data yang dimasukan :(')
         return [Restarted()]
Beispiel #10
0
 def run(
         self,
         dispatcher,  # type: CollectingDispatcher
         tracker,  # type: Tracker
         domain,  # type:  Dict[Text, Any]
 ):  # type: (...) -> List[Dict[Text, Any]]
     dispatcher.utter_message("Let's start over.")
     return [Restarted()]
    def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List["Event"]:

        return [Restarted()]
Beispiel #12
0
    async def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List[EventType]:

        return [Restarted(), FollowupAction("action_session_start")]
Beispiel #13
0
    def run(self, dispatcher, tracker, domain):
        responses = read_responses()

        return_message = responses["how_to_know_if_child_is_growing_well"][0]

        dispatcher.utter_message(
            text=return_message
        )
        return [Restarted()]
Beispiel #14
0
    def run(self, dispatcher: CollectingDispatcher,

            tracker: Tracker,

            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        dispatcher.utter_message(template="utter_ask_restart")

        return [Restarted()]
Beispiel #15
0
def test_applied_events_after_restart():
    events = [
        ActionExecuted("one"),
        user_uttered("two", 1),
        Restarted(),
        ActionExecuted("three"),
    ]

    tracker = get_tracker(events)

    assert tracker.applied_events() == [ActionExecuted("three")]
    def run(self, dispatcher, tracker, domain):
        responses = read_responses()

        curr_iteration = tracker.get_slot("iteration_num")

        if int(curr_iteration) >= 6:
            dispatcher.utter_message(text="That's all I have on the subject.")
            return [Restarted()]

        return_message = responses["keep_child_healthy"][int(curr_iteration)]

        dispatcher.utter_message(text=return_message)
        return [SlotSet("iteration_num", str(int(curr_iteration) + 1))]
Beispiel #17
0
    def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List[Dict]:

        num_room = tracker.get_slot("number")
        type_room = tracker.get_slot("type_room")

        dispatcher.utter_message("You have chosen to book " + str(num_room) +
                                 " " + str(type_room) + " rooms")
        return [Restarted()]
Beispiel #18
0
    def run(self, dispatcher, tracker, domain):
        # Get user's email id
        to_email = tracker.get_slot('emailid')
        match = re.match(r"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", to_email)
        if not match:
            dispatcher.utter_message("Email id not valid.. Please enter a valid email address! ")
            return [UserUtteranceReverted()]
        # Get location and cuisines to put in the email
        loc = tracker.get_slot('location')
        cuisine = tracker.get_slot('cuisine')
        global d_email_rest
        email_rest_count = len(d_email_rest)

        # Construct the email 'subject' and the contents.
        d_email_subj = "Top " + str(email_rest_count) + " " + cuisine.capitalize() + " restaurants in " + str(
            loc).capitalize()

        if email_rest_count == 0:
            d_email_msg = "Hi there! \n \nSorry we couldn't find any restaurants in your search preferences!!"
        else:
            d_email_msg = "Hi there! \n \nHere are the " + d_email_subj + ":" + "\n" + "\n" + "\n"
            count = 0
            for restaurant in d_email_rest:
                count+=1
                d_email_msg = d_email_msg + str(count)+ ". "+ restaurant['restaurant']['name'] + " in " + \
                              restaurant['restaurant']['location']['address'] + " has been rated " + str(
                    restaurant['restaurant']['user_rating']['aggregate_rating']) + " and the average cost for two people : " + str(
                    restaurant['restaurant']['average_cost_for_two']) + "\n" + "\n"

        # Open SMTP connection to our email id.
        s = smtplib.SMTP("smtp.gmail.com", 587)
        # s = smtplib.SMTP('localhost')
        s.starttls()
        s.login("*****@*****.**", "Foodie!@#$")

        # Create the msg object
        msg = EmailMessage()

        # Fill in the message properties
        msg['Subject'] = d_email_subj
        msg['From'] = "*****@*****.**"

        # Fill in the message content
        msg.set_content(d_email_msg)
        msg['To'] = to_email

        s.send_message(msg)
        s.quit()
        dispatcher.utter_message("**** EMAIL SENT! HAPPY DINING :) ****")
        return [Restarted()]
    async def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List[EventType]:

        dispatcher.utter_message(template="utter_restart")

        return [
            AllSlotsReset(),
            Restarted(),
            FollowupAction("action_session_start")
        ]
Beispiel #20
0
    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        # get country entity from the user's question via a slot
        country = tracker.get_slot('country')

        # search for a city in the given country
        sparql = SPARQLWrapper("https://query.wikidata.org/sparql", agent='Rasabot agent')
        sparql.setQuery("""
            PREFIX wikibase: <http://wikiba.se/ontology#>
            PREFIX wd: <http://www.wikidata.org/entity/>
            PREFIX wdt: <http://www.wikidata.org/prop/direct/>
            PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
            PREFIX bd: <http://www.bigdata.com/rdf#>

            SELECT ?itemLabel
            WHERE
            {
              # city:
              ?item wdt:P31 wd:Q1549591 .  # item is instance of city
            
              # population:
              ?item wdt:P1082 ?population . # city has some population, extract it to 'population'
            
              # country:
              ?item wdt:P17 ?country. # get the country to which the city belongs to
              ?country rdfs:label ?label . # extract the country label
              FILTER(LANG(?label) = "en"). # only english labels
              FILTER(REGEX(?label, "^%s$", "i")). # country name is equal to the given country
            
              SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
            }
            ORDER BY desc(?population) # biggest cities first
            LIMIT 1
        """ % country)
        sparql.setReturnFormat(JSON)
        results = sparql.query().convert()
        bindings = results['results']['bindings']

        # send back an answer to the user
        if len(bindings) == 0:
            dispatcher.utter_message(text="Country " + country + " not found!")
        else:
            biggest_city = bindings[0]['itemLabel']['value']  # get country name from the first result
            dispatcher.utter_message(text="It is " + biggest_city + "!")

        # finish the dialogue and start over (it empties slots)
        return [Restarted()]
Beispiel #21
0
 def run(self, dispatcher, tracker, domain):
     # Khai bao dia chi luu tru ket qua so xo. O day lam vi du nen minh lay ket qua SX Mien Bac
     ma_hs = next(tracker.get_latest_entity_values("ma_hs"), None)
     ma_hs = ma_hs.replace(" ","")
     url = 'http://thamdon.myxuyen.soctrang.gov.vn/api/hoso/tracuuhoso?tukhoa='+ma_hs
     # Tien hanh lay thong tin tu URL
     page = urllib.request.urlopen(url)
     soup = BeautifulSoup(page, 'html.parser')
     s = str(np.copy(str(soup)))
     return_msg = lay_tt(s)
     print(lay_tt(s))
     for i in return_msg:
         dispatcher.utter_message(i)
     dispatcher.utter_message(template="utter_restart")
     return [Restarted()]
Beispiel #22
0
	def run(self,dispatcher,tracker,domain):
		feedback = tracker.get_slot("confirm_feedback")
		print("hello")
		print(feedback)
		#if response == "no 👎":
		if feedback == "Not Satisfied":
			name= next(tracker.get_latest_entity_values("person"), None)
			if not name:
				dispatcher.utter_template("utter_name",tracker)
				UserUtteranceReverted()
				#return [UserUtteranceReverted()]
				
			return [SlotSet('person',name)]	
		else:
			dispatcher.utter_template("utter_goodbye",tracker)
			return[Restarted()]
Beispiel #23
0
    def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker,
               domain: Dict[Text, Any]) -> List[Dict]:
        service = tracker.get_slot('justdial').lower()
        city = tracker.get_slot('location').lower()
        message = justdialscrap(city, service)
        print(message)
        message = sorted(message.items())
        st = ""

        for key, val in message:
            st = st + key + ": " + str(val) + "\n "

        # dispatcher.utter_message(response ="utter_submit")
        dispatcher.utter_message(text=st)

        return [Restarted()]
Beispiel #24
0
    def submit(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List[Dict]:
        """Define what the form has to do
            after all required slots are filled"""
        business = tracker.get_slot('business')
        number = tracker.get_slot('phone_number')

        if business == "机主":
            dispatcher.utter_message("您要查询的号码{}属于隔壁老蒋".format(number))
        elif business == "余额":
            dispatcher.utter_message("您要查询的号码{}账户余额为66666元".format(number))
        else:
            dispatcher.utter_message("暂不支持查询{}业务".format(business))
        return [Restarted()]
Beispiel #25
0
    def run(self, dispatcher: CollectingDispatcher, tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        queja_id = tracker.get_slot("queja_id")
        queja_version = tracker.get_slot("queja_version")
        if queja_id is not None and queja_id != "":
            if queja_version is not None:
                u = quejas.update_queja(queja_id,
                                        status=quejas.status_pending,
                                        version=queja_version)
                logging.debug(u)
                dispatcher.utter_message(template="utter_end")
            else:
                dispatcher.utter_message(template="utter_end_mensajes")
        else:
            dispatcher.utter_message(template="utter_end_no_queja")
        redis.delete(tracker.sender_id + ":message_flag")
        return [AllSlotsReset(), Restarted()]
Beispiel #26
0
    def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker,
               domain: Dict[Text, Any]) -> List[Dict]:
        baseURL = "https://twitter.com/search?q="
        latest = "&f=live"
        URL = baseURL
        resource = tracker.get_slot('facility').lower()
        pincode = tracker.get_slot('pincode')
        city = tracker.get_slot('location').lower()

        if resource == "bed" or resource == "beds":
            URL = baseURL + "verified+" + city + "+(bed+OR+beds)" + latest
            print(URL)

        elif resource == "O2" or resource == "oxygen" or resource == "oxy":
            URL = baseURL + "verified+" + city + "+(oxygen)" + latest
            print(URL)

        elif resource == "icu":
            URL = baseURL + "verified+" + city + "+(icu)" + latest
            print(URL)

        elif resource == "ventilator" or resource == "ventilators":
            URL = baseURL + "verified+" + city + "+(ventilator+OR+ventilators)" + latest
            print(URL)

        elif resource == "plasma":
            URL = baseURL + "verified+" + city + "+(plasma)" + latest
            print(URL)

        elif resource == "remdesivir" or resource == "remdesivir":
            URL = baseURL + "verified+" + city + "+(remdesivir)" + latest
            print(URL)

        # elif resource=="food" or resource=="tiffin":
        #     URL=baseURL+"verified+"+city+"+(tiffin+OR+food)"+latest
        #     print(URL)
        else:
            URL = baseURL + "covid19" + latest
            print(URL)
        dispatcher.utter_message(response="utter_slots_values")
        dispatcher.utter_message(response="utter_submit")
        dispatcher.utter_message(text=URL)

        return [Restarted()]
Beispiel #27
0
    async def test_send_validation_code(self):
        first_name = "Bob"
        validation_code = "1234"

        entities = [
            {
                "entity": FIRST_NAME_ENTITY,
                "value": first_name
            },
            {
                "entity": VALIDATION_CODE_ENTITY,
                "value": validation_code
            },
        ]

        tracker = Tracker(
            "default",
            {},
            {"entities": entities},
            [],
            False,
            None,
            {},
            ACTION_LISTEN_NAME,
        )

        dispatcher = CollectingDispatcher()
        events = await ActionSendValidationCode().run(dispatcher, tracker, {})

        self.assertListEqual(events, [Restarted()])
        self.assertListEqual(
            dispatcher.messages,
            [{
                "attachment": None,
                "buttons": [],
                "custom": {},
                "elements": [],
                "first_name": first_name,
                "image": None,
                "template": "utter_daily_checkin_validation_code",
                "text": None,
                "validation_code": validation_code,
            }],
        )
    def run(self, dispatcher, tracker, domain):
        responses = read_responses()

        # get age from slot and convert "eight" to 8
        months_old = int(word_to_digits(tracker.get_slot('months_old')))
        print(months_old)
        if months_old < 6:
            return_message = responses["nutrition_information"]['6']
        elif months_old < 9:
            return_message = responses["nutrition_information"]['9']
        elif months_old < 12:
            return_message = responses["nutrition_information"]['12']
        elif months_old < 24:
            return_message = responses["nutrition_information"]['24']

        dispatcher.utter_message(
            text=return_message
        )
        return [Restarted()]
Beispiel #29
0
    def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List[Dict[Text, Any]]:
        # Khai bao dia chi luu tru ket qua so xo. O day lam vi du nen minh lay ket qua SX Mien Bac
        donvi_cb = tracker.get_slot("don_vi")
        donvi_cb = donvi_cb.lower()
        with open('data_full.json', encoding='utf-8') as file_write:
            d = json.load(file_write)

        diachi = tim_dn(donvi_cb,d,"địa chỉ")
        try:
            dispatcher.utter_message(diachi)
        except:
            dispatcher.utter_message(template="utter_loi")
        dispatcher.utter_message(template="utter_restart")
        return [Restarted()]
    def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List["Event"]:

        # Fallback caused by TwoStageFallbackPolicy
        if (len(tracker.events) >= 4 and tracker.events[-4].get("name")
                == "action_default_ask_affirmation"):

            dispatcher.utter_template("utter_restart_with_button", tracker)

            return [Restarted()]

        # Fallback caused by Core
        else:
            dispatcher.utter_template("utter_default", tracker)
            return [UserUtteranceReverted()]