def record_audio(): """Record audio from user and capture data, including title and blob.""" if 'email' in session: user_email = session['email'] user = User.query.filter_by(email=user_email).first() if request.method == 'POST': file = request.files['file'] title = request.form.get('title') transcript = request.form.get('transcript') if file: filename = str_generator(30) + '.wav' if title == '': new_recording = Upload(user_id=user.id, path=filename, transcript=transcript) else: new_recording = Upload(user_id=user.id, title=title, path=filename, transcript=transcript) db.session.add(new_recording) db.session.commit() # save audio file to S3 bucket k = b.new_key(filename) k.set_contents_from_file(file) return render_template('record.html') else: flash('You must be logged in to save recording') return redirect('/login')
def post(self): dataUrlPattern = re.compile('data:image/(png|jpeg);base64,(.*)$') file_data = self.request.get("file") imgb64 = dataUrlPattern.match(file_data).group(2) caption = self.request.get("caption") upload = Upload() upload.file = db.Blob(base64.b64decode(imgb64)) upload.caption = caption upload.put() self.redirect("/")
def get(self): uploads = Upload.all().fetch(100) template = JINJA_ENV.get_template("index.html") template_values = { 'uploads': uploads } self.response.write(template.render(template_values))
def incoming_call(): """Respond to incoming requests via Twilio call.""" from_number = request.values.get('From', None) call_sid = request.values.get('CallSid', None) # check if this is a user number from_number = from_number.replace('+1', '') user = User.query.filter_by(tel=from_number).first() resp = twilio.twiml.Response() if user != None: # greet the caller resp.say('Hello, %s.' % user.first_name) resp.say("""Start recording your story after the tone. After you are finished recording, press any key to confirm.""") request_str = request_generator() new_upload_placeholder = Upload(user_id=user.id) db.session.add(new_upload_placeholder) db.session.commit() print new_upload_placeholder new_upload_id = new_upload_placeholder.id new_request = RequestID(id=request_str, user_id=user.id, upload_id=new_upload_id, call_sid=call_sid) db.session.add(new_request) db.session.commit() print new_request message = client.messages.create( body="""Your story ID is %s.""" % (request_str), to='+1' + user.tel, # number to send request from_='+14153196892') # Twilio number resp.record(action='/handle-user-recording') return str(resp) else: # greet the caller resp.say("Hello.") # gather digits with resp.gather(numDigits=5, action="/handle-key", method="POST") as g: g.say( """Please enter the five digit code included in the text message request you received.""") return str(resp)
def generate_request_str(): """Generate requests with unique URL or Twilio text prompt.""" # initialize generated_url generated_url = False request_number = False if 'email' in session: user_email = session['email'] user = User.query.filter_by(email=user_email).first() if request.method == 'POST': if 'twilio' in request.form: request_str = request_generator() title = request.form.get('title') tel_number = request.form.get('tel') new_upload_placeholder = Upload(user_id=user.id, title=title) db.session.add(new_upload_placeholder) db.session.commit() new_upload_id = new_upload_placeholder.id new_request = RequestID(id=request_str, user_id=user.id, upload_id=new_upload_id) db.session.add(new_request) db.session.commit() twilio_number = '+14153196892' message = client.messages.create( body= """Talkalog: %s is requesting an audio recording for "%s". When you are ready, please call %s and have this request ID ready: %s""" % (user.first_name, title, twilio_number, request_str), to='+1' + tel_number, # number to send request from_='+14153196892') # Twilio number request_number = request_str else: request_str = request_generator() title = request.form.get('title') new_upload_placeholder = Upload(user_id=user.id, title=title) db.session.add(new_upload_placeholder) db.session.commit() new_upload_id = new_upload_placeholder.id new_request_url = RequestID(id=request_str, user_id=user.id, upload_id=new_upload_id) db.session.add(new_request_url) db.session.commit() generated_url = request_str else: flash('You must be logged in to generate request URL!') return redirect('/login') return render_template('generate.html', generated_url=generated_url, request_number=request_number)