Example #1
0
def sms_handler(request):
	r = Response()
	body = request.POST["Body"]
	print body
	penalty_message = get_penalty_message(body)
	r.sms(penalty_message)
	return r
Example #2
0
 def testAddConferenceConvenceMethod(self):
     """ add a conference to a dial, conviently"""
     r = Response()
     d = r.addDial()
     d.addConference("My Room")
     r = self.strip(r)
     self.assertEquals(r, '<?xml version="1.0" encoding="utf-8"?><Response><Dial><Conference>My Room</Conference></Dial></Response>')
Example #3
0
def handle_twilio_request():
    """Respond to incoming Twilio requests."""

    now = strftime("%Y-%m-%d %H:%M:%S", gmtime())

    call_number = request.args.get('Called')

    call_number = phonenumbers.parse("+" + call_number, None)
    call_number = phonenumbers.format_number(call_number, phonenumbers.PhoneNumberFormat.E164)

    agent = models.Agent.query.filter_by(phone=call_number).first()

    conference_name = '{time}-{name}'.format(time=now, name=agent.username)

    response = Response()
    with response.dial() as r:
        r.conference(conference_name,
                     beep=False, waitUrl='', startConferenceOnEnter="true",
                     endConferenceOnExit="true")

    conf = models.Conference(name=conference_name, status="waiting", agent_id=agent.id)

    models.add(conf)
    models.commit()

    return str(response)
Example #4
0
def coming_up(request):
    sessions = Session.objects.filter(is_public=True, event=Event.objects.current())
    r = Response()
    inmsg = request.POST.get('Body').strip() or 'next'
    if inmsg.lower() == 'next':
        messages = _as_sms(Session.objects.next())
    elif inmsg.lower() == 'now':
        messages = _as_sms(Session.objects.current())
    elif inmsg.lower() == 'lunch':
        try:
            now = timezone.now()
            messages = _as_sms(Session.objects.filter(start_time__day=now.day,
                                                      start_time__month=now.month,
                                                      start_time__year=now.year,
                                                      title__icontains='lunch')[0])
        except IndexError:
            messages = ["No lunch on the schedule for today, sorry.\n"]
    else:
        try:
            ts = dateparse(inmsg)
            if ts.hour is 0 and ts.minute is 0:
                messages = ["A lot of stuff can happen in a whole day! Try specifying a time.\n"]
            else:
                messages = _as_sms(sessions.filter(start_time__lte=ts, end_time__gte=ts))
        except:
            messages = ["Welcome to TCamp!\n\nOptions:\nnow: Current sessions\nnext: Next timeslot\nlunch: When's lunch?\n<time>, eg. 4:30pm: What's happening at 4:30?\n"]

    l = len(messages)
    for i, message in enumerate(messages):
        r.sms(message + '\n(%d/%d)' % (i+1, l))
    return r
Example #5
0
def verify_sms(request):
    from_number = request.POST.get("From", None)
    from_text = request.POST.get("Body", None)
    msg = game_logic(from_number, from_text)
    r = Response()
    r.message(msg)
    return r
Example #6
0
def sms_personal(request):
    name = request.POST.get('Body', '')
    msg = 'Hey %s, how are you today?' % (name)
    
    r = Response()
    r.message(msg)
    return r
Example #7
0
def sms(request):
    body = request.POST.get("Body", "")
    reg = RegistroSMS.objects.get(pk=body)
    msg = "Hola %s, que tal %s" % (reg.comprador.first_name, reg.vendedor.username)
    r = Response()
    r.sms(msg)
    return r
Example #8
0
def conference(request, name, muted=None, beep=None,
        start_conference_on_enter=None, end_conference_on_exit=None,
        wait_url=None, wait_method=None, max_participants=None):
    """See: http://www.twilio.com/docs/api/twiml/conference.

    Usage::

        # urls.py
        urlpatterns = patterns('',
            # ...
            url(r'^conference/?(P<name>\\w+)/$', 'django_twilio.views.conference',
                    {'max_participants': 10}),
            # ...
        )
    """
    r = Response()
    r.dial().conference(
        name = name,
        muted = muted,
        beep = beep,
        startConferenceOnEnter = start_conference_on_enter,
        endConferenceOnExit = end_conference_on_exit,
        waitUrl = wait_url,
        waitMethod = wait_method,
    )
    return r
Example #9
0
def handle_replay_message(request):
    digits = request.GET['digits']
    msg = get_fizzbuzz_message(int(digits))

    twilio_response = Response()
    twilio_response.say(msg)
    return twilio_response
Example #10
0
    def do_ringdown():
        numbers = parse_numbers(request.form.get('numbers', ''))
        data = {
            'stack': numbers,
            'sorry': request.form.get('sorry', '')
        }

        url = "{}/handle?{}".format(request.base_url, urlencode(data, True))

        r = Response()
        r.say('System is down for maintenance')
        fallback_url = echo_twimlet(r.toxml())

        try:
            client = twilio()
            client.phone_numbers.update(request.form['twilio_number'],
                                        friendly_name='[RRKit] Ringdown',
                                        voice_url=url,
                                        voice_method='GET',
                                        voice_fallback_url=fallback_url,
                                        voice_fallback_method='GET')

            flash('Number configured', 'success')
        except Exception:
            flash('Error configuring number', 'danger')

        return redirect('/ringdown')
Example #11
0
 def testToFromAction(self):
     """ Test the to, from, and status callback"""
     r = Response()
     r.append(twiml.Sms("Hello, World", to=1231231234, sender=3453453456,
         statusCallback="example.com?id=34&action=hey"))
     r = self.strip(r)
     self.assertEquals(r, '<?xml version="1.0" encoding="utf-8"?><Response><Sms from="3453453456" statusCallback="example.com?id=34&amp;action=hey" to="1231231234">Hello, World</Sms></Response>')
 def testAddNumberConvenienceStatusCallbackEvent(self):
     """ add a number to a dial, convience method """
     r = Response()
     d = r.addDial()
     d.addNumber("1231231234", statusCallback="http://example.com", statusCallbackEvent="initiated completed")
     r = self.strip(r)
     assert_equal(r, '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Number statusCallback="http://example.com" statusCallbackEvent="initiated completed">1231231234</Number></Dial></Response>')
Example #13
0
def receive(request):
    logger.debug('Get params: {0}'.format(request.GET))
    logger.debug('Post params: {0}'.format(request.POST))

#    {
#     u'Body': [u'Helo toto'],
#     u'FromZip': [u''],
#     u'SmsStatus': [u'received'],
#     u'FromCountry': [u'CA'],
#     u'FromCity': [u'MONTREAL'],
#     u'ApiVersion': [u'2010-04-01'],
#     u'To': [u'+15144180546'],
#     u'From': [u'+15146258937'],
#     u'ToZip': [u''],
#     u'ToCountry': [u'CA'],
#     u'ToState': [u'QC'],
#     u'AccountSid': [u'AC791403f3ec0098401e629d6aaf6b44bd'],
#     u'SmsSid': [u'SMb928abbc11c19f6e9f5215ec15e151c8'],
#     u'ToCity': [u'MONTREAL'],
#     u'FromState': [u'QC'],
#     u'SmsMessageSid': [u'SMb928abbc11c19f6e9f5215ec15e151c8']
#    }

    from_number = request.POST.get('From', None)
    if from_number in callers:
        r = Response()
        r.sms('Voici ton message, peanut! ({0})'.format(request.POST.get('Body', '')))
        return r
    else:
        return HttpResponseNotFound('Could not find your stuff')
Example #14
0
def handle_selection(request, slug):

    voicemailbox = get_object_or_404(VoicemailBox, slug=slug)

    chunk = voicemailbox.work.chunk_set.filter(number=request.POST.get('Digits'))

    if chunk.chunksubmission:


    r = Response()
    r.say(
        "Thank you. "
        "Please start reading, "
        "when you are done, you can hang up. "
    )
    
    action = reverse('handle-recording', kwargs={'slug': slug})

    r.record(action=action, timeout=20, maxLength=360, playBeep=True)


@csrf_exempt
def handle_recording(request, slug=None):

    voicemailbox = get_object_or_404(VoicemailBox, slug=slug)

    voicemailbox.collection.add_voicemail(
        audio_url=request.POST.get('RecordingUrl'),
        title='recorded in %s for %s' % (location, voicemailbox.target_location),
        location=voicemailbox.target_location,
    )
    return HttpResponse()
Example #15
0
    def get(self, request, client_call, pks):
        pks = pks.split(",")
        try:
            shelter = Shelter.objects.get(pk=pks[0])
        except Shelter.DoesNotExist:
            pks = ",".join(pks[1:])
            if pks:
                return redirect(reverse("phone:start_shelter_call", kwargs={"pks": pks, "client_call": client_call}))

        site = Site.objects.get_current()
        client.calls.create(
            to=shelter.phone_number,
            from_=settings.TWILIO_CALLER_ID,
            url=urljoin(
                "http://" + site.domain,
                reverse("phone:verify_shelter_availability", kwargs={"client_call": client_call, "pk": pks[0]}),
            ),
            method="GET",
            status_callback="http://%s/phone/shelter_call_callback/%s/%s/"
            % (site.domain, client_call, ",".join(pks[1:])),
            status_method="GET",
        )

        r = Response()
        r.say("We are contacting %s. Please hold." % shelter.name)
        r.enqueue(name="waiting_for_shelter", wait_url="http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient")
        return r
Example #16
0
 def test_add_queue(self):
     """ add a queue to a dial """
     r = Response()
     d = r.dial()
     d.append(twiml.Queue("The Cute Queue"))
     r = self.strip(r)
     assert_equal(r, '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Queue>The Cute Queue</Queue></Dial></Response>')
Example #17
0
 def testSipUsernamePass(self):
     """ should redirect the call """
     r = Response()
     d = r.dial()
     d.sip('*****@*****.**', username='******', password='******')
     r = self.strip(r)
     assert_equal(r, '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Sip password="******" username="******">[email protected]</Sip></Dial></Response>')
Example #18
0
def voice(request):
    """Create a Twilio response object which gathers the callers input"""
    r = Response()
    with r.gather(action='/respond/') as g:
        g.say('Please enter a number to play phone buzz. Press the pound key when finished.', voice='woman')
        g.pause(length=10)
    return r
    def do_simplehelp():

        data = parse_form(request.form)
        url = "{}/handle?{}".format(request.base_url, urlencode(data, True))

        r = Response()
        r.say('System is down for maintenance')
        fallback_url = echo_twimlet(r.toxml())

        try:
            client = twilio()
            client.phone_numbers.update(
                request.form['twilio_number'],
                friendly_name='[RRKit] Simple Help Line',
                voice_url=url,
                voice_method='GET',
                voice_fallback_url=fallback_url,
                voice_fallback_method='GET'
            )

            flash('Help menu configured', 'success')
        except Exception as e:
            print(e)
            flash('Error configuring help menu', 'danger')

        return redirect('/simplehelp')
Example #20
0
 def testSip(self):
     """ should redirect the call """
     r = Response()
     d = r.dial()
     d.sip('*****@*****.**')
     r = self.strip(r)
     assert_equal(r, '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Sip>[email protected]</Sip></Dial></Response>')
Example #21
0
def phone_vote(request):
    body = request.POST.get('Body', None)
    from_number = request.POST.get('From', None)
    r = Response()
    message = ''
    if body and body.isdigit():
        choice_id = int(body)
        choice = Choice.objects.filter(id=choice_id)
        if choice:
            c = choice[0]
            vc = VoterChoice.objects.filter(choice__poll=c.poll, phone_number=from_number)
            if vc:
                message = 'Sorry, you have already voted in this poll.' \
                    + ' You cannot vote twice.'
            elif c.poll.status() == 'ONGOING':
                c.votes += 1
                c.save()
                vc_obj = VoterChoice(choice=c, phone_number=from_number)
                vc_obj.save()
                message = 'Thanks for your vote!'
            elif c.poll.status() == 'PENDING':
                message = 'Sorry, your vote is invalid.' \
                    + ' This poll has not yet begun.'
            else:
                message = 'Sorry, your vote is invalid.' \
                    + ' This poll has already finished.'

    if not message:
        message = 'Please text a vote number correctly to vote.'
    r.sms(message)
    return r
Example #22
0
 def testAddNumberConvience(self):
     """add a number to a dial, convience method"""
     r = Response()
     d = r.addDial()
     d.addNumber("1231231234")
     r = self.strip(r)
     self.assertEquals(r, '<?xml version="1.0" encoding="utf-8"?><Response><Dial><Number>1231231234</Number></Dial></Response>')
Example #23
0
def get_sms_score(request):
    r = Response()
    return_number = request.POST['From']
    print return_number
    try:
        team_id = request.POST['Body']
        team = Team.objects.get(pk=team_id)
        scores = Score.objects.filter(team=team)
        sms_string = "Team:"+team.name +"\n"
        

     
        for score in scores:
            sms_string = sms_string + "Event: " +score.event.name+ " Score:"+str(score.score)+"\n"
      
    except Team.DoesNotExist:    
        sms_string = "We're sorry, The team number entered does not exist."
       
    except ValueError:
        sms_string= "Invalid Team Number"  
    
    
    r.sms(sms_string) 
         
    return r
Example #24
0
def handle_third_response(request):
    digits = request.POST.get('Digits', '')
    twilio_response_three=Response()
    #twilio_response_three.say(digits)
    twilio_response_three.play('http://travellingscholar.com/ammi/message6.mp3')
    twilio_response_three.gather(action='respond4', numDigits=1)
    return twilio_response_three
Example #25
0
def giveHelp(person_one, request):
    """ Method for ending a conversation """
    help_message = ""
    help_message += "End conversation: %s Unsubscribe: %s Help: %s" % (end_command, unsubscribe_command, help_command)
    r = Response()
    r.message(msg=help_message, to=person_one.phone_number)
    return r
    def handle_noticeboard_inbound():

        pusher_key = app.config.get('PUSHER_KEY', None)
        pusher_secret = app.config.get('PUSHER_SECRET', None)
        pusher_app_id = app.config.get('PUSHER_APP_ID', None)

        try:
            p = Pusher(pusher_app_id, pusher_key, pusher_secret)

            p['rrk_noticeboard_live'].trigger(
                'new_message',
                {
                    'image': request.values.get('MediaUrl0', None),
                    'body': request.values.get('Body', None),
                    'from': request.values.get('From', None)
                }
            )
        except:
            return '<Response />'

        to = request.values.get('To', '')
        r = Response()
        r.message(
            '''Thank you, your image has been posted
            to {0}noticeboard/live/{1}'''.format(request.url_root, to))
        return r.toxml()
Example #27
0
def sms(request):
    name = request.POST.get('Body', '')
    msg = 'Hey %s'

    r = Response()
    r.message(msg)
    return r
Example #28
0
 def testAddNumber(self):
     """add a number to a dial"""
     r = Response()
     d = twiml.Dial()
     d.append(twiml.Number("1231231234"))
     r.append(d)
     r = self.strip(r)
     self.assertEquals(r, '<?xml version="1.0" encoding="utf-8"?><Response><Dial><Number>1231231234</Number></Dial></Response>')
Example #29
0
def sms(request):
    enrolleeNumber = request.POST.get('Body', '')
    msg = 'Enrollment for %s confirmed' % (enrolleeNumber)
    r = Response()
    r.message(msg)
    enrollmentMessage = 'You have been enrolled in this progam. Stay tuned!'
    sendMessage(enrolleeNumber, enrollmentMessage)
    return r
Example #30
0
 def testAddConference(self):
     """ add a conference to a dial"""
     r = Response()
     d = twiml.Dial()
     d.append(twiml.Conference("My Room"))
     r.append(d)
     r = self.strip(r)
     self.assertEquals(r, '<?xml version="1.0" encoding="utf-8"?><Response><Dial><Conference>My Room</Conference></Dial></Response>')
Example #31
0
 def testSipUsernamePass(self):
     """ should redirect the call """
     r = Response()
     d = r.dial()
     d.sip('*****@*****.**', username='******', password='******')
     r = self.strip(r)
     assert_equal(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Sip password="******" username="******">[email protected]</Sip></Dial></Response>'
     )
Example #32
0
 def testAddNumberConvenience(self):
     """ add a number to a dial, convience method """
     r = Response()
     d = r.addDial()
     d.addNumber("1231231234")
     r = self.strip(r)
     assert_equal(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Number>1231231234</Number></Dial></Response>'
     )
Example #33
0
def gather_digits(request):

    twilio_response = Response()

    with twilio_response.gather(action='/respond/', numDigits=1) as g:
        g.say('Press one to hear a song, two to receive an SMS')
        g.pause(length=1)
        g.say('Press one to hear a song, two to receive an SMS')

    return twilio_response
Example #34
0
def handle_replay_message(request):
    digits = request.GET['digits']
    print 'through replay', digits

    msg = get_fizzbuzz_message(int(digits))

    twilio_response = Response()
    twilio_response.say(msg)

    return twilio_response
Example #35
0
 def test_add_queue(self):
     """ add a queue to a dial """
     r = Response()
     d = r.dial()
     d.append(twiml.Queue("The Cute Queue"))
     r = self.strip(r)
     assert_equal(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Queue>The Cute Queue</Queue></Dial></Response>'
     )
Example #36
0
 def testAddConferenceConvenceMethod(self):
     """ add a conference to a dial, conviently """
     r = Response()
     d = r.addDial()
     d.addConference("My Room")
     r = self.strip(r)
     assert_equal(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Conference>My Room</Conference></Dial></Response>'
     )
Example #37
0
    def setUp(self):
        r = Response()
        r.enqueue("TestEnqueueAttribute", action="act", method='GET',
                  waitUrl='wait', waitUrlMethod='POST')
        xml = r.toxml()

        #parse twiml XML string with Element Tree and inspect
        #structure
        tree = ET.fromstring(xml)
        self.conf = tree.find("./Enqueue")
Example #38
0
 def testSayFrench(self):
     """ should say hello monkey """
     r = Response()
     r.append(
         twiml.Say(u("n\xe9cessaire et d'autres"))
     )  # it works on python 2.6 with the from __future__ import unicode_literal
     assert_equal(
         text_type(r),
         '<?xml version="1.0" encoding="UTF-8"?><Response><Say>n&#233;cessaire et d\'autres</Say></Response>'
     )
Example #39
0
    def setUp(self):
        r = Response()
        with r.dial() as dial:
            dial.conference("TestConferenceAttributes", beep=False, waitUrl="",
                startConferenceOnEnter=True, endConferenceOnExit=True)
        xml = r.toxml()

        #parse twiml XML string with Element Tree and inspect structure
        tree = ET.fromstring(xml)
        self.conf = tree.find(".//Conference")
Example #40
0
 def testSip(self):
     """ should redirect the call"""
     r = Response()
     d = r.dial()
     d.sip('*****@*****.**')
     r = self.strip(r)
     self.assertEquals(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Sip>[email protected]</Sip></Dial></Response>'
     )
Example #41
0
    def setUp(self):
        r = Response()
        with r.dial() as dial:
            dial.queue("TestQueueAttribute", url="", method='GET')
            xml = r.toxml()

            #parse twiml XML string with Element Tree and inspect
            #structure
            tree = ET.fromstring(xml)
            self.conf = tree.find(".//Queue")
Example #42
0
 def testNestedSayPlayPause(self):
     """ a gather with a say, play, and pause"""
     r = Response()
     g = twiml.Gather()
     g.append(twiml.Say("Hey"))
     g.append(twiml.Play("hey.mp3"))
     g.append(twiml.Pause())
     r.append(g)
     r = self.strip(r)
     self.assertEquals(r, '<?xml version="1.0" encoding="UTF-8"?><Response><Gather><Say>Hey</Say><Play>hey.mp3</Play><Pause /></Gather></Response>')
Example #43
0
 def testAddNumber(self):
     """add a number to a dial"""
     r = Response()
     d = twiml.Dial()
     d.append(twiml.Number("1231231234"))
     r.append(d)
     r = self.strip(r)
     self.assertEquals(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Number>1231231234</Number></Dial></Response>'
     )
Example #44
0
 def testAddConference(self):
     """ add a conference to a dial"""
     r = Response()
     d = twiml.Dial()
     d.append(twiml.Conference("My Room"))
     r.append(d)
     r = self.strip(r)
     self.assertEquals(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Conference>My Room</Conference></Dial></Response>'
     )
Example #45
0
def gather_digits(request):

    msg = 'Oye. Press a number to enter the world of Fizz Buzz. You can press maximum two digits'

    twilio_response = Response()
    with twilio_response.gather(action='/respond/', numDigits=2) as g:
        g.say(msg)
        g.pause(length=1)
        g.say(msg)

    return twilio_response
Example #46
0
def sms(request):
    phone = request.POST.get('From', '')
    r = Response()
    if Caller.objects.filter(phone=phone).exists():  # DOES USER EXIST?
        caller = Caller.objects.get(phone=phone)
        if caller.isActive():  # AND IS NOT EXPIRED
            recieved_message = request.POST.get('Body', '')
            Message.objects.create_message(sender=caller,
                                           body=recieved_message)

    return HttpResponse(r.toxml(), content_type='text/xml')
Example #47
0
def answer(request):
    logger.debug('Get params: {0}'.format(request.GET))
    logger.debug('Post params: {0}'.format(request.POST))

    from_number = request.POST.get('From', None)
    if from_number in callers:
        resp = Response()
        resp.say("Hello peanut")
        return str(resp)
    else:
        return HttpResponseNotFound()
Example #48
0
 def testSipUri(self):
     """ should redirect the call """
     r = Response()
     d = r.dial()
     s = d.sip()
     s.uri('*****@*****.**')
     r = self.strip(r)
     assert_equal(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Sip><Uri>[email protected]</Uri></Sip></Dial></Response>'
     )
Example #49
0
def handle_recording():
    """Play back the caller's recording."""
    recording_url = request.values.get("RecordingUrl", None)
    resp = Response()
    if recording_url:
        resp.say("Thanks for howling... take a listen to what you howled.")
        resp.play(recording_url)
        resp.say("Goodbye.")
    else:
        resp.say("An error has occurred.  Goodbye.")
    return str(resp)
Example #50
0
def handle_call(conference_id):
    conference = models.Conference.query.get(conference_id)

    response = Response()
    with response.dial() as r:
        r.conference(conference.name,
                     beep=False,
                     waitUrl='',
                     startConferenceOnEnter="true",
                     endConferenceOnExit="false")

    return str(response)
Example #51
0
def log_contact(contact, user):
    time = timezone.now()
    LogEntry.objects.create(contact=contact,
                            logged_by=user,
                            time=timezone.now(),
                            kind='in person')
    contact.last_contact = time
    contact.save()
    r = Response()
    r.message("Updated {} ({})".format(contact.name,
                                       contact.get_complete_url()))
    return HttpResponse(r.toxml(), content_type='text/xml')
Example #52
0
    def setUp(self):
        r = Response()
        with r.enqueue(None, workflowSid="Workflow1") as e:
            e.task('{"selected_language":"en"}', priority="10", timeout="50")

        xml = r.toxml()

        # parse twiml XML string with Element Tree and inspect
        # structure
        tree = ET.fromstring(xml)
        self.enqueue = tree.find("./Enqueue")
        self.task = self.enqueue.find(".//Task")
Example #53
0
 def testAddNumberConvenienceStatusCallbackEvent(self):
     """ add a number to a dial, convience method """
     r = Response()
     d = r.addDial()
     d.addNumber("1231231234",
                 statusCallback="http://example.com",
                 statusCallbackEvent="initiated completed")
     r = self.strip(r)
     assert_equal(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Number statusCallback="http://example.com" statusCallbackEvent="initiated completed">1231231234</Number></Dial></Response>'
     )
Example #54
0
def twilio_call_transfer_end(request, call_id):
    report = get_object_or_404(WhipReport, id=int(call_id))
    report.call_status = "connection-ended"
    report.call_log["finished"] = dict(request.POST)
    report.call_log["finished"]["_request"] = get_request_log_info(request)
    report.save()

    resp = TwilioResponse()
    resp.say(
        "Your call to Congress has ended. Thank you for being a great citizen. Goodbye."
    )
    return resp
Example #55
0
 def testActionMethod(self):
     """ Test the action and method parameters on Sms"""
     r = Response()
     r.append(
         twiml.Sms("Hello",
                   method="POST",
                   action="example.com?id=34&action=hey"))
     r = self.strip(r)
     self.assertEquals(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Sms action="example.com?id=34&amp;action=hey" method="POST">Hello</Sms></Response>'
     )
Example #56
0
def twilio_call_transfer_ended(request, calllog_id):
    call_log = get_object_or_404(CallLog, id=int(calllog_id))
    call_log.status = "connection-ended"
    call_log.log["finished"] = dict(request.POST)
    call_log.log["finished"]["_request"] = get_request_log_info(request)
    call_log.save()

    resp = TwilioResponse()
    resp.say(
        "Your call to Congress has ended. Thank you for being a good citizen. Goodbye."
    )
    return resp
Example #57
0
 def testSayConvienceMethod(self):
     """convenience method: should say have a woman say hello monkey and loop 3 times and be in french"""
     r = Response()
     r.addSay("Hello Monkey",
              loop=3,
              voice=twiml.Say.MAN,
              language=twiml.Say.FRENCH)
     r = self.strip(r)
     self.assertEquals(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Say language="fr" loop="3" voice="man">Hello Monkey</Say></Response>'
     )
Example #58
0
 def testNestedSayPlayPauseConvience(self):
     """ a gather with a say, play, and pause"""
     r = Response()
     g = r.addGather()
     g.addSay("Hey")
     g.addPlay("hey.mp3")
     g.addPause()
     r = self.strip(r)
     self.assertEquals(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Gather><Say>Hey</Say><Play>hey.mp3</Play><Pause /></Gather></Response>'
     )
Example #59
0
 def testToFromAction(self):
     """ Test the to, from, and status callback"""
     r = Response()
     r.append(
         twiml.Sms("Hello, World",
                   to=1231231234,
                   sender=3453453456,
                   statusCallback="example.com?id=34&action=hey"))
     r = self.strip(r)
     self.assertEquals(
         r,
         '<?xml version="1.0" encoding="UTF-8"?><Response><Sms from="3453453456" statusCallback="example.com?id=34&amp;action=hey" to="1231231234">Hello, World</Sms></Response>'
     )
Example #60
0
def sms_ahoy_reply():
    """Respond to incoming messages with a friendly SMS."""
    number = request.form['From']
    message_body = request.form['Body']

    # Start our response
    resp = Response()

    # Add a message
    resp.message("Hype, {}. This works! You just sent: {}".format(
        number, message_body))

    return str(resp)