Beispiel #1
0
def gather(request):

    logger.debug("Calling gather")
    d = request.GET.get("Digits")
    logger.debug("Digit Pressed= %s" % d)
    try:
        r = Response()
        if d == "1":
            r.say("You pressed 1")
            try:
                api = twitter.Api()
                statuses = api.GetUserTimeline("diarmuid")

                r.say(statuses[0].text)
            except Exception, ex:
                logger.debug(ex)
                r.say("Error getting twitter results")
            r.redirect(reverse("calls_hello"))
            return r
        elif d == "2":
            r.say("You pressed 2")
            r.say("Record your message after the tone.")

            r.record(maxLength="10", action=reverse("calls_record"))
            return r
def handle_connect(request):
    recipient_number = request.POST.get('Digits', '')
    r = Response()
    if 'visitor' in request.session:
        try:
            recipient = Visitor.objects.get(access_code=recipient_number)
            request.session['recipient'] = {
                'id': recipient.id,
                'name': recipient.user.first_name,
                'number': recipient.access_code
            }
            # record a message
            r.say(
                'The person you tried to call is unavailable. Please leave a message')
            r.record(maxLength=30, action=reverse(
                'twiliorouter:handle_record')
            )
        except Visitor.DoesNotExist:
            request.session['welcome_message'] = 'Number not recognised'
            r.redirect(reverse('twiliorouter:connect'))
    else:
        request.session[
            'welcome_message'] = 'You need to enter your phone number'
        r.redirect(reverse('twiliorouter:welcome'))
    return r
def welcome(request, message=''):
    if message == '':
        message = 'Welcome to Hill Valley.'
    if 'welcome_message' in request.session:
        message = request.session['welcome_message']
        del request.session['welcome_message']
    r = Response()
    r.say(message)
    # if we are logged in return options, otherwise ask for login
    if 'visitor' in request.session:
        r.redirect(reverse('twiliorouter:welcome_options'))
    else:
        # try to login
        r.redirect(reverse('twiliorouter:login'))
    return r
Beispiel #4
0
def record(request):
    """A simple test view that returns a HttpResponse object."""
    r = Response()
    try:

        u = request.POST["RecordingUrl"]

        r.say("Thanks for the message... take a listen to your message .")
        r.play(u)
        r.say("Goodbye.")
        r.redirect(reverse("calls_hello"))
        return r
    except Exception, ex:
        logger.debug(ex)
        r.redirect(reverse("calls_hello"))
def connect(request):
    # we are trying to connect to another account
    r = Response()
    if 'visitor' in request.session:
        with r.gather(
            numDigits=6,
            timeout=10,
            finishOnKey='*',
            action=reverse('twiliorouter:handle_connect'), method='POST'
        ) as g:
            g.say(
                'please enter the 6 digit number you want to connect to'
            )
    else:
        request.session['welcome_message'] = ''
        r.redirect(reverse('twiliorouter:welcome'))
    return r
def handle_login(request):
    access_code = request.POST.get('Digits', '')
    r = Response()
    try:
        visitor = Visitor.objects.get(access_code=access_code)
        request.session['visitor'] = {
            'id': visitor.id,
            'name': visitor.user.first_name,
            'number': visitor.access_code
        }
        # this was a valid user code - redirect to inbox
        r.redirect(
            reverse('twiliorouter:twilio_messages', args=[visitor.access_code]))
        return r
    except Visitor.DoesNotExist:
        request.session['welcome_message'] = 'Number not recognised'
        r.redirect(reverse('twiliorouter:welcome'))
    return r
Beispiel #7
0
    def handle_opt():
        response = Response()

        digit = request.form["Digits"]
        opt = request.args.get("opt_" + digit, None)

        if opt is None:
            response.say(err_say)
            response.redirect("{}?{}".format(request.base_url, request.query_string))
            return str(response)

        opt_args = opt.split(":")

        if opt_args[0] == "Call":
            response.dial(opt_args[2])
        elif opt_args[0] == "Info":
            response.say(opt_args[2], voice=voice)
            response.say(end_say, voice=voice)

        return str(response)
Beispiel #8
0
def notify_call(request, notification_uuid):
    r = Response()

    try:
        notification = Notification.objects.get(uuid=notification_uuid)
    except Notification.DoesNotExist:
        return r

    r.say("This is an oncaller notification.")

    message = notification.message
    if message:
        r.say(message, loop=2)

    #duke!
    r.play('http://dev.oncallr.com/static/audio/b2w.mp3')
    r.pause(length=1)
    r.say("Hit 1 to acknowledge, 2 to reject.", voice="woman")
    r.gather(action="http://www.oncallr.com/notification/call/response/{0}/".format(notification_uuid), method="POST", numDigits=1, timeout=2, finishOnKey=None)
    r.redirect(url="http://www.oncallr.com/notification/call/response/{0}/".format(notification_uuid), method="POST")
    return r
Beispiel #9
0
    def handle_opt():
        response = Response()

        digit = request.form['Digits']
        opt = request.args.get('opt_' + digit, None)

        if opt is None:
            response.say(err_say)
            response.redirect("{}?{}".format(request.base_url,
                                             request.query_string))
            return str(response)

        opt_args = opt.split(':')

        if opt_args[0] == 'Call':
            response.dial(opt_args[2])
        elif opt_args[0] == 'Info':
            response.say(opt_args[2], voice=voice)
            response.say(end_say, voice=voice)

        return str(response)
Beispiel #10
0
def handle_response_message(request):

    digits = request.POST.get('Digits', '')
    to_number = request.POST.get('To', '')
    call_sid = request.POST.get('CallSid', '')
    twilio_response = Response()

    return_message = get_fizzbuzz_message(int(digits))

    # if digits == '1':
    #     twilio_response.play('http://bit.ly/phaltsw')
    #
    # if digits == '2':
    #     number = request.POST.get('From', '')
    #     twilio_response.say('A text message is on its way')
    #     twilio_response.sms('You looking lovely today!', to=number)

    twilio_response.say(return_message)
    update_call_record(to_number, call_sid, str(digits))
    twilio_response.redirect('/ring/')
    return twilio_response
Beispiel #11
0
def twilio_messages(request):
    # this endpoint is used to return the twiml response for the inbox count
    r = Response()
    if 'visitor' in request.session:
        visitor = request.session['visitor']
        # get active messages for this user
        # todo - only return active messages (i.e. not expired)
        num_new_messages = 0
        num_old_messages = 0
        messages = Message.objects.filter(recipient__id=visitor['id'])
        for message in messages:
            if message.accessed == False:
                num_new_messages += 1
            else:
                num_old_messages += 1

        if num_new_messages > 0:
            r.say('user inbox')
        else:
            r.say('you have no new messages')
    else:
        request.session['welcome_message'] = 'Number not recognised'
        r.redirect(reverse('twiliorouter:welcome'))
    return r
Beispiel #12
0
def handle_welcome_options(request):
    if 'visitor' in request.session:
        visitor = request.session['visitor']
        choice = int(request.POST.get('Digits', '0'))
        r = Response()
        if choice == 1:
            # user wants to listen to their message - try to login
            r.redirect(
                reverse('twiliorouter:twilio_messages'), args=[visitor['number']])
        elif choice == 2:
            # user wants to contact another user
            r.redirect(reverse('twiliorouter:connect'))
        else:
            request.session['welcome_message'] = 'Option not available'
            r.redirect(reverse('twiliorouter:welcome'))
    else:
        request.session['welcome_message'] = 'Option not available'
        r.redirect(reverse('twiliorouter:welcome'))
    return r