Ejemplo n.º 1
0
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')
Ejemplo n.º 2
0
    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("/")
Ejemplo n.º 3
0
    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))
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)