def reply(): app.logger.info("Inbound sms: %s" % str(request.form)) # valiate user success = authorize.validate(str(request.form.get('From', None))) if not success: app.logger.error( str(request.form.get('From', None)) + "not authorized") return abort(401) app.logger.info(str(request.form.get('From', None)) + "authorized") # Rate limited user = str(request.form.get('From', None)) if not rateLimiter.check(user): rateLimiter.new_user(user) request_premitted = rateLimiter.consume(user, 1) if not request_premitted: app.logger.error("%s is rate limited" % user) return "Rate limited. Try again in several minutes", 400 # actual response resp = MessagingResponse() smsValid = validateSMS(request.form) if not smsValid: app.logger.error("Inbound sms validation failed") resp.message("Cannot search for a photo %s" % Response.emoji("cry")) return str(resp), 200, {'Content-Type': 'text/xml'} sms = parseSMS(request.form) ### Choose Photo app.logger.info("Selecting photo from dynamodb") selected_photo = SelectPhotoTask.RunNormal(flickr_client, sms) # selected_photo = SelectPhotoTask.RunRandom(flickr_client, sms) # for random pics ### res = Response.generateTwilioResponse(sms, selected_photo) # Add a message msg = resp.message(res['body']) if res.get('media', None): msg.media(res['media']) app.logger.info("Replying to %s with %s" % (res['from'], str(resp))) return str(resp), 200, {'Content-Type': 'text/xml'}
def test(): return Response.emoji()