def get_reply(): global previous_query_msg, previous_query_type, previous_wolfram_obj, previous_wiki_string msg = str(request.args.get('Body')) to_number = str(request.args.get('From')) from_number = sms_helper.get_from_number() if msg.lower() == "--help": return get_xml_return("Welcome to the Smart Twilio Messenger! Just text me anything you want to know about, and have fun! @shirj23 #UofTHakcs2016") if "awesome" in msg.lower() and "this" in msg.lower(): return get_xml_return("Thank you!") if "more" in msg.lower() and previous_query_msg != "": if previous_query_type == "wolfram": for pod in previous_wolfram_obj.pods: if "pedia" in pod.title: sms_helper.send_mms(to_number, from_number, pod.title + ":", pod.img) return reply_start + \ '\n'.join(wolfram_helper.get_all_title_and_answer_str_from_resultObj(previous_wolfram_obj)) + \ reply_end elif previous_query_type == "wiki": wikiObj = wikipedia.page(previous_query_msg) split_ind = previous_wiki_string.index('\n') try: i = 0 while not any(word in wikiObj.images[i] for word in SMS_image_ext): i += 1 sms_helper.send_mms(to_number,from_number, "(continue...)\n"+ previous_wiki_string[split_ind+1:min(len(previous_wiki_string),split_ind+1000)]+"...", wikiObj.images[i]) print("Wiki MMS message sent") except Exception as e: print("Wiki MMS message failed") traceback.print_tb(e.__traceback__) return reply_start + \ wikiObj.url + ':\n' + previous_wiki_string[0:split_ind] + \ reply_end else: previous_query_msg = msg # try: wolframResObj = wolfram_helper.get_wolframalpha_resultObj(msg) if wolframResObj.pods and "wikipedia" not in msg.lower(): previous_query_type = "wolfram" previous_wolfram_obj = wolframResObj if wolfram_helper.get_answer_str_from_resultObj(wolframResObj) != "": ans_w_tit = wolfram_helper.get_answer_with_title_from_resultObj(wolframResObj) return reply_start+ans_w_tit+reply_end else: if return_query_and_answer(wolframResObj): body = get_query_and_answer_mms_body(wolframResObj) media_url = get_query_and_answer_mms_media_URL(wolframResObj) else: body = wolfram_helper.get_answer_title_from_resultObj(wolframResObj) media_url = [wolfram_helper.get_answer_img_from_resultObj(wolframResObj)] sms_helper.send_mms(to_number, from_number, body, media_url) return reply_start+"An MMS result is sent:\n"+reply_end else: if "wikipedia" in msg.lower(): msg = msg[msg.find("Wikipedia")+len("Wikipedia")+1:] previous_query_type = "wiki" try: previous_wiki_string = wikipedia.summary(msg) return reply_start+previous_wiki_string[0:min(len(previous_wiki_string),100)]+'...'+reply_end except wikipedia.exceptions.PageError: related = wikipedia.search(msg) if related: previous_query_msg = related[0] previous_wiki_string = wikipedia.summary(previous_query_msg) return reply_start+ previous_query_msg + '\n'+ previous_wiki_string[0:min(len(previous_wiki_string),100)]+'...' + \ "\nAlso try ask about: " + ",".join(related[1:min(5, len(related))]) + reply_end else: return get_error_message(msg) except wikipedia.exceptions.DisambiguationError as e: return get_xml_return("Do you mean:\n" + ",".join(e.options))
def get_query_and_answer_mms_media_URL(resObj): return [wolfram_helper.get_answer_img_from_resultObj(resObj)]