def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]): disease = tracker.get_slot("disease") pre_disease = tracker.get_slot("sure") print("pre_disease::::" + str(pre_disease)) possible_diseases = retrieve_disease_name(disease) """ search_food db action here """ food = dict() if disease == pre_disease or len(possible_diseases) == 1: m = [x['m.name'] for x in graph.run("match (a:Disease{name: {disease}})-[:can_eat]->(m:Food) return m.name", disease=disease).data()] food['can_eat'] = "、".join(m) if m else "暂无记录" m = [x['m.name'] for x in graph.run("match (a:Disease{name: {disease}})-[:not_eat]->(m:Food) return m.name", disease=disease).data()] food['not_eat'] = "、".join(m) if m else "暂无记录" retmsg = "在患 {0} 期间,可以食用:{1},\n但不推荐食用:{2}".\ format(disease, food['can_eat'], food['not_eat']) dispatcher.utter_message(retmsg) elif len(possible_diseases) > 1: buttons = [] for d in possible_diseases: buttons.append(make_button(d, '/search_food{{"disease":"{0}", "sure":"{1}"}}'.format(d, d))) dispatcher.utter_button_message("请点击选择想查询的疾病,若没有想要的,请忽略此消息", buttons) else: dispatcher.utter_message("知识库中暂无与 {0} 相关的饮食记录".format(disease)) return []
def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[EventType]: try: ward_no = tracker.get_slot('ward_no') df = ward_tax_fetch(ward_no, sub_type='total_tax') total_properties = str(df.shape[0]) total_tax = str( sum([val for val in df["tax_amnt"] if val != -1 and val != -2])) ward_name = df['ward_nm'][0] message1 = 'We have total of {0} properties in this ward({1}) and the total tax paid is {2}' \ .format(total_properties,ward_name,total_tax) message2 = 'Do you like to know more information?' buttons = [{ "title": "Yes", "payload": "/ward_yes_b" }, { "title": "No", "payload": "/ward_no_b" }] message = '{0}\n{1}'.format(message1, message2) dispatcher.utter_button_message(message, buttons) except: message = 'Please enter ward number correctly eg: 23' dispatcher.utter_message(text=message) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]): disease = tracker.get_slot("disease") pre_disease = tracker.get_slot("sure") print("pre_disease::::" + str(pre_disease)) possible_diseases = retrieve_disease_name(disease) if disease == pre_disease or len(possible_diseases) == 1: a = graph.run("match (a:Disease{name: {disease}}) return a.cause", disease=disease).data()[0]['a.cause'] if "treat" in a: treat = a['treat'] template = "{0}的治疗方式有:{1}" retmsg = template.format(disease, "、".join(treat)) else: retmsg = disease + "暂无该疾病的病因的记录" dispatcher.utter_message(retmsg) elif len(possible_diseases) > 1: buttons = [] for d in possible_diseases: buttons.append( make_button( d, '/search_cause{{"disease":"{0}", "sure":"{1}"}}'. format(d, d))) dispatcher.utter_button_message("请点击选择想查询的疾病,若没有想要的,请忽略此消息", buttons) else: dispatcher.utter_message("知识库中暂无与 {0} 相关的原因记录".format(disease)) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: dispatcher.utter_message(text="Hello! I am <b>COVID-19 Bot</b>") myloc = geocoder.ip('me') coords = (myloc.latlng) lat = coords[0] longi = coords[1] appid = "ada92477f59a9aabe54d3dde5cd8e0ff" request_weather_url = "http://api.openweathermap.org/data/2.5/weather?lat={}&lon={}&appid={}".format( lat, longi, appid) respose_weather = requests.get(request_weather_url) respose_weather = respose_weather.json() temp = round(float(respose_weather['main']['temp'] - 273.15), 3) pressure = respose_weather['main']['pressure'] humidity = respose_weather['main']['humidity'] weather_desc = respose_weather['weather'][0]['description'] response_message = "Temparature around you is {} °C with Pressure {} hPa and Humidity {}%. The weather looks like {}.<b> How may i help you?</b>".format( temp, pressure, humidity, weather_desc) dispatcher.utter_message(text=response_message) title = [ "COVID India Cases", "Latest News", "Covid Testing Centre's Near Me", "Emergency Number" ] payload = [ '/mood_cases', '/mood_news', '/mood_testing_centre', '/mood_emergency' ] buttons_show = [] for i2 in range(0, len(title)): x_2 = {"title": title[i2], "payload": payload[i2]} buttons_show.append(x_2) dispatcher.utter_button_message(text="", buttons=buttons_show) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]): disease = tracker.get_slot("disease") pre_disease = tracker.get_slot("sure") print("pre_disease::::" + str(pre_disease)) possible_diseases = retrieve_disease_name(disease) if disease == pre_disease or len(possible_diseases) == 1: a = graph.run( "match (a:Disease{name: {disease}}) return a.prevent", disease=disease).data()[0] if 'a.prevent' in a: prevent = a['a.prevent'] template = "以下是有关预防 {0} 的知识:{1}" retmsg = template.format(disease, md(prevent.replace('\n', '<br/>'))) else: retmsg = disease + "暂无常见预防方法" dispatcher.utter_message(retmsg) elif len(possible_diseases) > 1: buttons = [] for d in possible_diseases: buttons.append( make_button( d, '/search_prevention{{"disease":"{0}", "sure":"{1}"}}'. format(d, d))) dispatcher.utter_button_message("请点击选择想查询的疾病,若没有想要的,请忽略此消息", buttons) else: dispatcher.utter_message("知识库中暂无与 {0} 相关的预防记录".format(disease)) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]): disease = tracker.get_slot("disease") pre_disease = tracker.get_slot("sure") print("pre_disease::::" + str(pre_disease)) possible_diseases = retrieve_disease_name(disease) if disease == pre_disease or len(possible_diseases) == 1: a = [ x['s.name'] for x in graph.run( "MATCH (p:Disease{name: {disease}})-[r:can_use_drug]->\ (s:Drug) RETURN s.name", disease=disease).data() ] if a: template = "在患 {0} 时,可能会用药:{1}" retmsg = template.format(disease, "、".join(a)) else: retmsg = "无 %s 的可能用药记录" % disease dispatcher.utter_message(retmsg) elif len(possible_diseases) > 1: buttons = [] for d in possible_diseases: buttons.append( make_button( d, '/search_drug{{"disease":"{0}", "sure":"{1}"}}'.format( d, d))) dispatcher.utter_button_message("请点击选择想查询的疾病,若没有想要的,请忽略此消息", buttons) else: dispatcher.utter_message("知识库中暂无与 {0} 相关的用药记录".format(disease)) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]): disease = tracker.get_slot("disease") pre_disease = tracker.get_slot("sure") print("pre_disease::::" + str(pre_disease)) possible_diseases = retrieve_disease_name(disease) if disease == pre_disease or len(possible_diseases) == 1: a = graph.run( "match (a:Disease{name: {disease}})-[:belongs_to]->(s:Department) return s.name", disease=disease).data()[0]['s.name'] template = "{0} 属于 {1}" retmsg = template.format(disease, a) dispatcher.utter_message(retmsg) elif len(possible_diseases) > 1: buttons = [] for d in possible_diseases: buttons.append( make_button( d, '/search_disease_dept{{"disease":"{0}", "sure":"{1}"}}' .format(d, d))) dispatcher.utter_button_message("请点击选择想查询的疾病,若没有想要的,请忽略此消息", buttons) else: dispatcher.utter_message("知识库中暂无与 {0} 疾病相关的科室记录".format(disease)) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]): disease = tracker.get_slot("disease") pre_disease = tracker.get_slot("sure") print("pre_disease::::" + str(pre_disease)) possible_diseases = retrieve_disease_name(disease) if disease == pre_disease or len(possible_diseases) == 1: a = graph.run("match (a:Disease{name: {disease}}) return a", disease=disease).data()[0]['a'] easy_get = a['easy_get'] template = "{0}的易感人群是:{1}" retmsg = template.format(disease, easy_get) dispatcher.utter_message(retmsg) elif len(possible_diseases) > 1: buttons = [] for d in possible_diseases: buttons.append( make_button( d, '/search_easy_get{{"disease":"{0}", "sure":"{1}"}}'. format(d, d))) dispatcher.utter_button_message("请点击选择想查询的疾病,若没有想要的,请忽略此消息", buttons) else: dispatcher.utter_message("知识库中暂无与 {0} 相关的易感人群记录".format(disease)) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]): disease = tracker.get_slot("disease") pre_disease = tracker.get_slot("sure") if not disease: entities = tracker.latest_message['entities'] for entity in entities: if entity['entity'] == "disease": disease = entity['value'] print("A"*50) print(disease, pre_disease) possible_diseases = get_disease(disease) if disease == pre_disease or len(possible_diseases) == 1: print("#"*50) print("Stage 2 ", disease,pre_disease) final_disease = department(disease) if final_disease: dispatcher.utter_message(final_disease) else: dispatcher.utter_message("Nothing in the knowledge base {0}".format(disease)) elif len(possible_diseases) > 1: print("#"*50) print("Stage 1 ", disease,pre_disease) buttons = [] for d in possible_diseases: buttons.append(make_button(d, '/search_disease_dept{{"disease":"{0}", "sure":"{1}"}}'.format(d, d))) dispatcher.utter_button_message("Please click to select the disease you want to inquire, if there is nothing you want, please ignore this message", buttons) else: dispatcher.utter_message("Nothing in the knowledge base {0}".format(disease)) return [SlotSet('disease', None), SlotSet('sure', None)]
def run( self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any], ) -> List[Dict[Text, Any]]: import requests resp = requests.get( "https://www.1secmail.com/api/v1/?action=getMessages&login={}&domain={}" .format(tracker.get_slot("login"), tracker.get_slot("domain"))) resp = resp.json() if len(resp) == 0: dispatcher.utter_message( "No email available in this email-address") else: for mail in resp: # dispatcher.utter_message(", please use id: {} for reading email".format(mail["from"], mail["subject"], mail["id"])) dispatcher.utter_button_message( text="You have a mail from: {}, with subject line: {}". format(mail["from"], mail["subject"]), buttons=[{ "title": "read", "payload": mail["id"] }]) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: global randomnum, myresult, hintlist, hintmaxx, hintcnt, finfo, i, count quizentity = next(tracker.get_latest_entity_values("quiz"), None) queryy = 'select * from quizes' mycursor.execute(queryy) myresult = mycursor.fetchall() maxx = len(myresult) randomnum = random.randint(maxx) if i == 4: return [FollowupAction("action_send_problem_link")] msg = myresult[i][1] buttons = [{ "title": myresult[i][2], "payload": myresult[i][2] }, { "title": myresult[i][3], "payload": myresult[i][3] }, { "title": myresult[i][4], "payload": myresult[i][4] }, { "title": myresult[i][5], "payload": myresult[i][5] }] dispatcher.utter_button_message(msg + str(count), buttons) i = i + 1 return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: buttons = [] with open("data/movieSchedule.json", "r") as MS: movieSchedule = json.load(MS) with open("data/movieTime.json", "r") as MT: movieTime = json.load(MT) movieDate = str(tracker.get_slot("movieDate")) today_time = datetime.now().strftime("%I %p") today_time = datetime.strptime(today_time, "%I %p") today = datetime.now().strftime("%d-%m-%Y") for i in movieSchedule[movieDate].keys(): temp_time = datetime.strptime(movieTime[i], "%I %p") if (movieDate == today): if (temp_time > today_time): payload = "I choose " + i buttons.append({ "title": "{}".format(movieSchedule[movieDate][i]), "payload": payload }) else: payload = "I choose " + i buttons.append({ "title": "{}".format(movieSchedule[movieDate][i]), "payload": payload }) message = "Please select a movie" dispatcher.utter_button_message(message, buttons) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: search_string = tracker.get_slot('fav_breed') search_breed_id_url = 'https://api.thedogapi.com/v1/breeds/search?q=' + search_string dog = re.get(search_breed_id_url, headers={"x-api-key":ac.dog_key}).json() if len(dog) > 1: dogs_list = [x['name'] for x in dog] buttons = [{'title':dog,'payload':'/fav_breed{"fav_breed":'+dog+"}"} for dog in dogs_list] dispatcher.utter_button_message(text='Which breed do you mean?',buttons=buttons) elif len(dog) == 1: dog = dog[0] dog_name = dog['name'] try: dog_temp = dog['temperament'].split(",") dog_temp = [x.strip(' ') for x in dog_temp] except: dog_temp = [] search_img_breed_id_url = 'https://api.thedogapi.com/v1/images/search?breed_id=' + str(dog['id']) dog_pic_json = re.get(search_img_breed_id_url, headers={"x-api-key":ac.dog_key}).json() if dog_pic_json: dog_pic_url = dog_pic_json[0]['url'] else: dog = [] return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: # get the last message sent by user message = tracker.latest_message.get('text') # Get symptoms slot syms = tracker.get_slot("symptom_list") if syms is None: syms = [] # Check if symptom in list if message not in syms: syms.append(message) else: dispatcher.utter_message("Already noted that you have: " + message) return [] # Update slot SlotSet("symptom_list", syms) # Get suggested symptom based on input suggested_symptom = dObj.suggest_symptoms(syms) # Check if symptom not already suggested clean_syms = [] for symp in suggested_symptom: if symp not in syms and symp not in suggested_so_far: clean_syms.append(symp) else: suggested_so_far.append(symp) if (len(clean_syms) > 0): num = random.randrange(0, len(clean_syms)) else: dispatcher.utter_template('utter_alternative') return [SlotSet("symptom_list", syms)] # Create response buttons buttons = [{ "title": "Yes", "payload": clean_syms[num] }, { "title": "No", "payload": "/deny" }] # Send message dispatcher.utter_message("You said you have: " + message) dispatcher.utter_button_message( "Do you also have " + clean_syms[num] + "?", buttons) return [SlotSet("symptom_list", syms)]
def run( self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any], ) -> List[EventType]: intent_ranking = tracker.latest_message.get("intent_ranking", []) if len(intent_ranking) > 1: diff_intent_confidence = intent_ranking[0].get( "confidence" ) - intent_ranking[1].get("confidence") if diff_intent_confidence < 0.2: intent_ranking = intent_ranking[:2] else: intent_ranking = intent_ranking[:1] 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..." ) entities = tracker.latest_message.get("entities", []) entities = {e["entity"]: e["value"] for e in entities} entities_json = json.dumps(entities) buttons = [] for intent in first_intent_names: logger.debug(intent) logger.debug(entities) buttons.append( { "title": self.get_button_title(intent, entities), "payload": "/{}{}".format(intent, entities_json), } ) # /out_of_scope is a retrieval intent # you cannot send rasa the '/out_of_scope' intent # instead, you can send one of the sentences that it will map onto the response buttons.append( { "title": "Something else", "payload": "I am asking you an out of scope question", } ) dispatcher.utter_button_message(message_title, buttons=buttons) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: product = tracker.get_slot("product") print("Product " + product) buttons = [{"title": "Weitere Informationen", "payload": "Was ist versichert in " + product}, {"title": "Aktuelle Corona Lage", "payload": "Corona Situation"}] dispatcher.utter_button_message("Was möchtest du erfahren ?", buttons) return []
def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any] ) -> List[Dict]: """Once required slots are filled, print buttons for found facilities""" local = tracker.get_slot('location') if type(local) == list: location = local[0] else: location = local facility_type = tracker.get_slot('facility_type') results = _find_facilities(location, facility_type) button_name = _resolve_name_2(FACILITY_TYPES, facility_type) if len(results) == 0: dispatcher.utter_message( "Sorry, we could not find a {} in {}.".format(button_name, location.title())) return [] buttons = [] # limit number of results to 3 for clear presentation purposes for r in results[:3]: if facility_type == FACILITY_TYPES["hospital"]["resource"]: facility_id = r.get("id") name = r["hospital_name"] elif facility_type == FACILITY_TYPES["clinic"]["resource"]: facility_id = r.get("id") name = r["clinic_name"] elif facility_type == FACILITY_TYPES["pharmacy"]["resource"]: facility_id = r.get("id") name = r["pharmacy_name"] else: facility_id = r["id"] name = r["facility_name"] payload = "/inform{\"facility_id\":\"" + facility_id + "\"}" buttons.append( {"type": "postback", "title": "{}".format(name.title()), "payload": payload}) if len(buttons) == 1: message = "Here is a {} near you:".format(button_name) else: if button_name == "pharmacy": button_name = "pharmacies" message = "Here are {} {}s near you:".format(len(buttons), button_name) dispatcher.utter_button_message(message, buttons) return []
def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict]: """Once required slots are filled, print buttons for found facilities""" location = tracker.get_slot('location') facility_type = tracker.get_slot('facility_type') #/////////////////////////////////////////////////////////////////// print(facility_type, "fkjgoiejojeof0044444444444444444444") print(_resolve_name(FACILITY_TYPES, facility_type), "resolve################3") results = _find_facilities(location, facility_type) button_name = _resolve_name(FACILITY_TYPES, facility_type) if len(results) == 0: dispatcher.utter_message( "Sorry, we could not find a {} in {}.".format( button_name, location.title())) return [] buttons = [] # limit number of results to 3 for clear presentation purposes for r in results[:3]: if facility_type == FACILITY_TYPES["hospital"]["resource"]: facility_id = r.get("provider_id") name = r["hospital_name"] elif facility_type == FACILITY_TYPES["nursing_home"]["resource"]: facility_id = r["federal_provider_number"] name = r["provider_name"] else: facility_id = r["provider_number"] name = r["provider_name"] payload = "/inform{\"facility_id\":\"" + facility_id + "\"}" buttons.append({ "title": "{}".format(name.title()), "payload": payload }) if len(buttons) == 1: message = "Here is a {} near you:".format(button_name) else: if button_name == "home health agency": button_name = "home health agencie" message = "Here are {} {}s near you:".format( len(buttons), button_name) # TODO: update rasa core version for configurable `button_type` dispatcher.utter_button_message(message, buttons) return []
def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict]: """Once required slots are filled, print buttons for found hotels""" local = tracker.get_slot('location') if type(local) == list: location = local[0] else: location = local hotel_type = tracker.get_slot('hotel_type') results = _find_hotels(location, hotel_type) button_name = _resolve_name(HOTEL_TYPES, hotel_type) if len(results) == 0: dispatcher.utter_message("Sorry, we could not find a {} in {}.".format(button_name, location.title())) return [] buttons = [] # limit number of results to 3 for clear presentation purposes for r in results[:3]: if hotel_type == HOTEL_TYPES["5_star"]["resource"]: hotel_id = r.get("id") name = r["hotel_name"] elif hotel_type == HOTEL_TYPES["4_star"]["resource"]: hotel_id = r.get("id") name = r["hotel_name"] elif hotel_type == HOTEL_TYPES["3_star"]["resource"]: hotel_id = r.get("id") name = r["hotel_name"] elif hotel_type == HOTEL_TYPES["tourist_standard_hotels"]["resource"]: hotel_id = r.get("id") name = r["hotel_name"] elif hotel_type == HOTEL_TYPES["resorts"]["resource"]: hotel_id = r.get("id") name = r["hotel_name"] else: hotel_id = r["id"] name = r["hotel_name"] payload = "/inform{\"hotel_id\":\"" + hotel_id + "\"}" buttons.append({"type": "postback", "title": "{}".format(name.title()), "payload": payload}) if len(buttons) == 1: message = "Here is a {} near you:".format(button_name) else: if button_name == "tourist standard hotel": button_name == "standard hotels" message = "Here are {} {}s near you:".format(len(buttons), button_name) dispatcher.utter_button_message(message, buttons) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: buttons = [] for blob in tracker.latest_message['entities']: # print(tracker.latest_message) if blob['entity'] == 'topic': name = blob['value'] path = "data/faqs/" + name + ".txt" knowledge = Path(path).read_text().split("\n") for i in knowledge: title = i payload = i buttons.append({"title": title, "payload": payload}) dispatcher.utter_button_message("Please find the below FAQ List", buttons) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]): disease = tracker.get_slot("disease") pre_disease = tracker.get_slot("sure") possible_diseases = ['查部门', '查药物', '查症状', '查食物'] buttons = [] for d in possible_diseases: buttons.append( make_button( d, '/search_disease{{"disease":"{0}", "sure":"{1}"}}'.format( d, d))) dispatcher.utter_button_message("请点击选择想查询的疾病,若没有想要的,请忽略此消息", buttons) return []
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) > 1: diff_intent_confidence = intent_ranking[0].get( "confidence" ) - intent_ranking[1].get("confidence") if diff_intent_confidence < 0.2: intent_ranking = intent_ranking[:2] else: intent_ranking = intent_ranking[:1] 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..." ) entities = tracker.latest_message.get("entities", []) entities = {e["entity"]: e["value"] for e in entities} entities_json = json.dumps(entities) buttons = [] for intent in first_intent_names: logger.debug(intent) logger.debug(entities) buttons.append( { "title": self.get_button_title(intent, entities), "payload": "/{}{}".format(intent, entities_json), } ) buttons.append({"title": "Something else", "payload": "/out_of_scope"}) dispatcher.utter_button_message(message_title, buttons=buttons) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: buttons = [{ "title": "Song", "payload": "song" }, { "title": "Image", "payload": "image" }, { "title": "Joke", "payload": "joke" }, { "title": "Quote", "payload": "quote" }] dispatcher.utter_button_message("Would you like any of these? :)", buttons)
def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict]: buttons = [] city = tracker.get_slot("city") #state = tracker.get_slot("state") facility = tracker.get_slot('facility_type') print(facility) url = 'https://indian-hospital.herokuapp.com/api/v1/hospitals/?' # if state != None: # url = url +'state=' + state + '&' url = url + 'city=' + city.title( ) + '&' + "category=" + facility.title() print(url) payload = {} headers = {} response = requests.request("GET", url, headers=headers, data=payload) data = response.json() print(data) if len(data) == 0: dispatcher.utter_message( "Sorry😔, I could not find a {} Hospital in {}. But Soon I will update my database.😊" .format(facility, city.title())) return [] for d in data[:3]: facility_id = d['id'] payload = "/inform{\"facility_id\":\"" + str(facility_id) + "\"}" buttons.append({ 'title': "{}".format(d['name'].title()), "payload": payload }) if len(buttons) == 1: message = "Here is a {} Hospital near you.".format(facility) else: message = "Here are {} {}s Hospitals near you:".format( len(buttons), facility) dispatcher.utter_button_message(message, buttons) return []
def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict]: """Once required slots are filled, print buttons for found facilities""" location = tracker.get_slot('location') company = tracker.get_slot('company') results = _find_company(location, company) button_name = _resolve_name(COMPANIES, company) if len(results) == 0: dispatcher.utter_message( "Sorry, we could not find a {} in {}.".format( button_name, location.title())) return [] buttons = [] # limit number of results to 3 for clear presentation purposes for r in results[:3]: if company == COMPANIES["Siemens"]["resource"]: company_id = r.get("id") name = r["name"] elif company == COMPANIES["Datev"]["resource"]: company_id = r["id"] name = r["name"] else: company_id = r["id"] name = r["name"] payload = "/inform{\"company_id\":\"" + company_id + "\"}" buttons.append({ "title": "{}".format(name.title()), "payload": payload }) if len(buttons) == 1: message = "Here is a {} near you:".format(button_name) else: if button_name == "test": button_name = "tests" message = "Here are {} {}s near you:".format( len(buttons), button_name) # TODO: update rasa core version for configurable `button_type` dispatcher.utter_button_message(message, buttons) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: text = "Sample Button Replies" buttons = [{ 'title': 'Test Sample Text', 'payload': 'Sample Text', 'content_type': 'text' }, { 'title': 'Test Sample Image', 'payload': 'Sample Image', 'content_type': 'text' }, { 'title': 'Test Sample Carousel', 'payload': 'Sample Carousel', 'content_type': 'text' }] dispatcher.utter_button_message(text, buttons) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: last_intent_name = tracker.latest_message['intent']['name'] # get the prompt for the intent intent_prompt = self.intent_mappings[last_intent_name] # Create the affirmation message and add two buttons to it. # Use '/<intent_name>' as payload to directly trigger '<intent_name>' # when the button is clicked. message = "Did you mean '{}'?".format(intent_prompt) buttons = [{ 'title': 'Yes', 'payload': '/{}'.format(last_intent_name) }, { 'title': 'No', 'payload': '/out_of_scope' }] dispatcher.utter_button_message(message, buttons=buttons) return [UserUtteranceReverted()]
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: with open("data/movieSchedule.json", "r") as MS: movieSchedule = json.load(MS) dateList = [] buttons = [] dateList = movieSchedule.keys() today = datetime.now().strftime("%d-%m-%Y") today = datetime.strptime(today, "%d-%m-%Y") for i in dateList: temp_date = datetime.strptime(i, "%d-%m-%Y") if (temp_date < today): continue else: payload = str(i) buttons.append({"title": "{}".format(i), "payload": payload}) message = "Please select a date" dispatcher.utter_button_message(message, buttons) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]): buttons = [ { "title": "Current Weather", "payload": "/ask_weather{\"date\": \"today\"}" }, { "title": "Tomorrow's Forecast", "payload": "/ask_weather{\"date\": \"tomorrow\"}" }, ] name = tracker.slots.get('name') if name: dispatcher.utter_button_message( f"Hi {name}! I'm Wenny can tell you weather information. What are you looking for?", buttons) else: # TODO: update rasa core version for configurable `button_type` dispatcher.utter_button_template("utter_greet", buttons, tracker) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain): conn = sqlite3.connect('job_data.db') cuisine = tracker.get_slot('skills') cuisine = cuisine.replace(' ',',') if ',' in cuisine: result = [x.strip() for x in cuisine.split(',')] if 'and' in result: result.remove('and') if len(result)>2: q = conn.execute("SELECT DISTINCT company,position from joblistings \ WHERE skills_req like '%{}%' or skills_req like '%{}%' or skills_req like '%{}%' LIMIT 5\ ".format(result[0].lower(),result[1].lower(),result[2].lower())) elif len(result)==2: q = conn.execute("SELECT DISTINCT company,position from joblistings \ WHERE skills_req like '%{}%' or skills_req like '%{}%' LIMIT 5 \ ".format(result[0].lower(),result[1].lower())) else: q = conn.execute("SELECT DISTINCT company,position from joblistings \ WHERE skills_req like '%{}%' LIMIT 5 \ ".format(result[0].lower())) r=(q.fetchall()) dispatcher.utter_message("select the position for which you want to enquire") buttons = [] for row in r: title = ("company {} position {}".format(row[0],row[1])) payload = ('company {} position {}'.format(row[0],row[1])) buttons.append({ "title": title, "payload": payload }) dispatcher.utter_button_message("",buttons)