def handle_mqtt_message(client, userdata, message): data = dict(topic=message.topic, payload=message.payload.decode()) # print(data) message = data["payload"] from_no = data["topic"].split("/")[1] print(message, from_no) if sparrow.is_sparrow_request(message): sparrow.handle_sparrow_request(from_no, message) return receiver = db.getReceiver(from_no) print(receiver) if receiver == db.IBM_RECEIVER: if sparrow.is_command(message): sparrow.handle_command(from_no, message) return reply = chatbot.handle_message(from_no, message) for message in reply: mqtt.publish(data["topic"].replace("receive", "response"), message) sleep(2) return else: messaging.send_message(receiver, message) return
def handle_sparrow_request(from_no, sparrow_message): message = sparrow_message.split(' ', 1)[1].strip() # Remove first word (@sparrow here) if is_command(message): handle_command(from_no, message) else: replies = chatbot.handle_message(from_no, message) messaging.send_messages(from_no, replies)
def listen_input(): message = request.values.get('Body', None) from_no = request.values.get('From', None) print(message, from_no) #Handling Media content num_media = int(request.values.get("NumMedia")) if num_media > 0: media_url = request.values.get(f'MediaUrl0') mime_type = request.values.get(f'MediaContentType0') print(media_url, mime_type) if num_media > 1: messaging.send_message( from_no, "Multiple media cannot be sent. Sending only first media") #Handling @statefarm commands if statefarm.is_statefarm_request(message): t = Thread(target=statefarm.handle_statefarm_request, args=( from_no, message, )) t.start() # statefarm.handle_statefarm_request(from_no, message) return str(MessagingResponse()) receiver = db.getReceiver(from_no) if receiver == db.IBM_RECEIVER: if statefarm.is_command(message): t = Thread(target=statefarm.handle_command, args=(from_no, message)) t.start() return str(MessagingResponse()) elif num_media > 0: reply = "Sorry! Our Automated chatbot doesn't support Media at this point." elif message == "": reply = "Invalid format. Your message is empty!" else: replies = chatbot.handle_message(from_no, message) if len(replies) > 1: t = Thread(target=messaging.send_messages, args=(from_no, replies)) t.start() return (str(MessagingResponse())) else: reply = replies[0] resp = MessagingResponse() resp.message(reply) return str(resp) else: if num_media > 0: messaging.send_message_with_media(from_no, receiver, message, media_url, mime_type) elif message == "": messaging.send_message(from_no, "Invalid message. Can't be sent") else: messaging.send_message(receiver, message) return str(MessagingResponse())
def handleVoiceResponse(): #resp = VoiceResponse() soundURL = (request.values['RecordingUrl']) print(request.values) calltext = request.values['TranscriptionText'] caller = request.values['From'] msgBody = chatbot.handle_message(caller, calltext) messaging.send_messages(caller, msgBody) return 'success'