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()]
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()]
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()]
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
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()]
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()]
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()]
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()]
async def run( self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any], ) -> List[EventType]: return [Restarted(), FollowupAction("action_session_start")]
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()]
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: dispatcher.utter_message(template="utter_ask_restart") return [Restarted()]
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))]
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()]
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") ]
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()]
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()]
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()]
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()]
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()]
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()]
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()]
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()]
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()]