Beispiel #1
0
def digits():
    action = request.args.get('action', 'http://domain.name/getdigits/')
    method = request.args.get('method', 'GET')
    timeout = request.args.get('timeout', '')
    retries = request.args.get('retries', '')
    finishonkey = request.args.get('finishOnKey', '')
    numdigits = request.args.get('numDigits', 0)
    validdigits = request.args.get('validDigits', '0123456789#*')
    params = {'action': action, 'method': method}
    if timeout:
        params['timeout'] = timeout
    if retries:
        params['retries'] = retries
    if finishonkey:
        params['finishOnKey'] = finishonkey
    if numdigits:
        params['numDigits'] = numdigits
    response = plivo.Response()
    getdigits = plivo.GetDigits(**params)
    getdigits.addSpeak(body="Press 1 for English.")
    getdigits.addSpeak(body="Press 2 for Spanish.")
    ## getdigits.addSpeak(body="Press 2 for German.")
    response.add(getdigits)
    response.addSpeak(body="Input not received. Thank you.")
    ret_response = make_response(response.to_xml())
    ret_response.headers["Content-type"] = "text/xml"
    return ret_response
Beispiel #2
0
def conf():
    print "All Args %s" % str(request.args.items())
    from_number = request.args.get('From', None)
    print "Member with number %s entered into conf" % from_number
    try:
        print "Conf %s" % request.values.items()
        r = plivo.Response()
        r.addSpeak(
            "Hi, welcome to plivo realtime conference demo. You will now be placed into conference.",
            voice="WOMAN")
        r.addConference(
            "demo",
            enterSound="beep:1",
            waitSound=
            "http://plivoconferencedemo.herokuapp.com/response/conf/music/",
            timeLimit=600000,
            action=
            "http://plivoconferencedemo.herokuapp.com/response/conf/action/",
            digitsMatch="1,2,3,4",
            callbackUrl=
            "http://plivoconferencedemo.herokuapp.com/response/conf/callback/",
            callbackMethod="GET",
            floorEvent="true")
        return render_template('response_template.xml', response=r)
    except Exception, e:
        print str(e)
        return "ERROR %s" % str(e)
Beispiel #3
0
def dial():
    """
    GET parameter:
        numbers - a comma seperated values of numbers
                which will be dialed
    """
    try:
        numbers = request.args['numbers']
        numbers = numbers.split(',')
    except KeyError:
        numbers = get_numbers()

    try:
        From = request.args['From']
    except KeyError:
        From = None

    if not numbers:
        response = make_response("Please provide numbers")
        return response

    r = plivo.Response()
    r.addSpeak('Welcome, We are connecting your call')
    if From:
        d = r.addDial(callerId = From)
    else:
        d = r.addDial()

    for number in numbers:
        d.addNumber(number)

    response = make_response(r.to_xml())
    response.headers['Content-Type'] = 'text/xml'
    return response
Beispiel #4
0
def getdigits():
    ## import ipdb; import ipdb
    if request.method == 'GET':
        digits = request.args.get('Digits', '')
    elif request.method == 'POST':
        digits = request.form.get('Digits', '')

    resp = plivo.Response()
    if digits:
        if digits == '1':
            resp.addSpeak("Hello, welcome to Plivo's demo app")
        else:
            ## convert the accented characters to html entities
            text = cgi.escape(
                u'Hola, bienvenido a la aplicación de demostración Plivo'
            ).encode('ascii', 'xmlcharrefreplace')
            resp.addSpeak(body=text, language='es-ES', loop=0)
            ## text = cgi.escape(u'Wie heißt du? Sie weiß nicht? Ich heiße Plivo').encode('ascii', 'xmlcharrefreplace')
            ## resp.addSpeak(body=text, language='de-DE')

    else:
        resp.addSpeak('No input received')

    ret_response = make_response(resp.to_xml())
    ret_response.headers["Content-type"] = "text/xml"
    return ret_response
Beispiel #5
0
def response_sip_route():
    if request.method == 'GET':
        to_number = request.args.get('To', None)
        from_number = request.args.get('CLID', None)
        if from_number is None:
            from_number = request.args.get('From', '')
        caller_name = request.args.get('CallerName', '')
    elif request.method == 'POST':
        to_number = request.form.get('To', None)
        from_number = request.form.get('CLID', None)
        if from_number is None:
            from_number = request.form.get('From', '')
        caller_name = request.form.get('CallerName', '')
    else:
        return make_response('Method not allowed.')

    response = plivo.Response()
    if not to_number:
        response.addHangup()
    else:
        if to_number[:4] == 'sip:':
            response.addDial(callerName=caller_name).addUser(to_number)
        else:
            response.addDial(callerId=from_number).addNumber(to_number)

    response = make_response(response.to_xml())
    response.headers['Content-Type'] = 'text/xml'

    return response
Beispiel #6
0
def confwait():
    response = plivo.Response()
    response.addPlay(body='http://localhost/music.mp3')

    print response.to_xml()
    xml_response = make_response(response.to_xml())
    xml_response.headers["Content-type"] = "text/xml"
    return xml_response
Beispiel #7
0
def conf_action():
    try:
        print "Conf Action %s" % request.values.items()
        r = plivo.Response()
        r.addSpeak("you are in conference action", loop=1)
        return render_template('response_template.xml', response=r)
    except Exception, e:
        print str(e)
        return "ERROR %s" % str(e)
Beispiel #8
0
def conference_music():
    r = plivo.Response()
    play_parameters = {
        'loop': '50',
    }
    r.addPlay(PLIVO_MUSIC, **play_parameters)
    response = make_response(r.to_xml())
    response.headers['Content-Type'] = 'text/xml'
    return response
Beispiel #9
0
def answer_plivo():
    resp = plivo.Response()
    if request.form['Event'] == 'StartApp':
        resp.addSpeak('Hi, This is a Git hub notification.', voice = 'MAN')
        resp.addWait(length=1)
        resp.addSpeak(app.message)

        app.message = ''
    return resp.to_xml()
def conf_get_input():
    response = plivo.Response()
    repsonse.addSpeak('If you know your conference pin, please enter')
    getdigits = response.addGetDigits(action='http://' + SERVER_NAME +
                                      '/getdigits/',
                                      timeout='15',
                                      finishOnKey='#')
    response.addSpeak(body="Input not received. Thank you.")
    xml_response = make_response(response.to_xml())
    xml_response.headers["Content-type"] = "text/xml"
    return xml_response
Beispiel #11
0
def receive_sms():
    # Sender's phone numer
    from_number = request.values.get('From')
    # Receiver's phone number - Plivo number
    to_number = request.values.get('To')
    # The text which was received
    text = request.values.get('Text')

    resp = plivo.Response()
    resp.message('Hello')
    return str(resp)
Beispiel #12
0
def conf_music():
    try:
        print "Conf Music %s" % request.values.items()
        r = plivo.Response()
        r.addSpeak(
            "You are currently alone in the conference. Please wait. Thank you."
        )
        r.addPlay("https://s3.amazonaws.com/plivocloud/music.mp3", loop=1)
        return render_template('response_template.xml', response=r)
    except Exception, e:
        print str(e)
        return "ERROR %s" % str(e)
Beispiel #13
0
def record_xml():

    if request.method == 'GET':
        r = plivo.Response()
        r.addSpeak('Leave a message after the beep')
        r.addRecord(action=base_url + 'save_record_url/',
                    maxLength=30,
                    playBeep=True)

        response = make_response(r.to_xml())
        response.headers['Content-Type'] = 'text/xml'
        return response
Beispiel #14
0
def play_xml():
    """
    Returns a <Play> element. This element plays an audio file
    back to the caller. Plivo allows playback from a remote url.
    Currently mp3 and wav file formats are supportd
    """
    if request.method == 'GET':
        r = plivo.Response()
        p = r.addPlay(play_url, loop=play_loop)

        response = make_response(r.to_xml())
        response.headers['Content-Type'] = 'text/xml'
        return response
Beispiel #15
0
def confselect():
    response = plivo.Response()
    getdigits = response.addGetDigits(action='http://%s/confroom/' %
                                      SERVER_NAME,
                                      timeout='15',
                                      finishOnKey='#',
                                      method='GET')
    getdigits.addWait(length='1')
    getdigits.addSpeak(
        "Please enter your conference i d, followed by the pound key.")
    response.addSpeak(body="Input not received. Thank you.")
    xml_response = make_response(response.to_xml())
    xml_response.headers["Content-type"] = "text/xml"
    return xml_response
Beispiel #16
0
def record_message():
    xml_response = plivo.Response()
    xml_response.addSpeak(
        body='Record your message after the beep. Press asterisk when done')
    #xml_response.addPlay(body='http://server/sound/file/url/')
    xml_response.addRecord(action='http://' + request.environ['SERVER_NAME'] +
                           '/getrecording/',
                           method='GET',
                           maxLength=60,
                           finishOnKey='*')
    xml_response.addSpeak(body='Recording not received')
    response = make_response(xml_response.to_xml())
    response.headers["Content-type"] = "text/xml"
    return response
def hello():
    response = plivo.Response()
    recording_parameters = {
        'action': 'http://server/url1',
        'method': 'GET',
        'maxLength': '30',
        'finishOnKey': '*',
        'transcriptionType': 'auto',
        'transcriptionUrl': 'http://server/url2',
        'transcriptionMethod': 'GET',
    }
    response.addRecord(**recording_parameters)
    return_response = make_response(response.to_xml())
    return_response.headers["Content-Type"] = "text/xml"
    return return_response
Beispiel #18
0
def answer_url():
    r = plivo.Response()

    # Add speak
    body = 'This is Plivo Lets Talk App.'
    params = {'loop': 1}
    r.addSpeak(body, **params)

    #Add Dial Number
    d = r.addDial()
    d.addNumber(dialNumber2)

    response = make_response(r.to_xml())
    response.headers["Content-type"] = "text/xml"

    return response
Beispiel #19
0
def record_xml():
    """
    Returns a <Record> element. This element records the caller’s 
    voice and stores the file containing the audio recording.
    """

    if request.method == 'GET':
        r = plivo.Response()
        r.addSpeak('Leave a message after the beep')
        r.addRecord(action=base_url + 'save_record_url/',
                    maxLength=30,
                    playBeep=True)

        response = make_response(r.to_xml())
        response.headers['Content-Type'] = 'text/xml'
        return response
Beispiel #20
0
def dial_xml():
    """
    Return a <Dial> element. This element connects the caller
    to another phone. When the called party picks the call,
    the two are connected until one hangs up. If the called
    party does not pick up, or if the number doesn't exist,
    the <Dial> element will end.
    """
    if request.method == 'GET':
        r = plivo.Response()

        d = r.addDial(callerId=dial_callerId)
        d.addNumber(dial_number)

        response = make_response(r.to_xml())
        response.headers['Content-Type'] = 'text/xml'
        return response
Beispiel #21
0
def confroom():
    if request.method == 'GET':
        conf = request.args.get('Digits', '')
    elif request.method == 'POST':
        conf = request.form.get('Digits', '')

    response = plivo.Response()
    response.addSpeak(body="Now entering conference " + ",".join(str(conf)))
    response.addConference(enterSound='beep:2',
                           exitSound='beep:1',
                           waitSound='http://%s/confwait/' % SERVER_NAME,
                           body=conf)

    print response.to_xml()
    xml_response = make_response(response.to_xml())
    xml_response.headers["Content-type"] = "text/xml"
    return xml_response
Beispiel #22
0
def conference_response():
    r = plivo.Response()
    r.addSpeak(
        'Welcome to the world of top class conferencing! You are being placed into a conference.',
        voice='WOMAN')
    conference_params = {
        'enterSound': 'beep:1',
        'waitSound': BASE_URL + 'response/conf/music/',
        'timeLimit': '8400',
        'callbackUrl': BASE_URL + 'response/conf/callback/',
        'callbackMethod': 'GET',
    }
    r.addConference(CONFERENCE_NAME, **conference_params)

    response = make_response(r.to_xml())
    response.headers['Content-Type'] = 'text/xml'
    return response
Beispiel #23
0
def vmmenu(id):
    option = request.args.get('Digits', '')

    response = plivo.Response()
    mailbox = Mailbox(id)

    if option == '2':
        if len(mailbox.new_msgs) > 0:
            # Start playing new messages.  Pass the time of oldest new
            # message so we spot new messages when they get moved to the saved
            # list.
            response.addSpeak(body="%d new messages" % (len(mailbox.new_msgs)))
            msg = mailbox.new_msgs[0]
            play_message(response, mailbox, 'new', str(msg.received), msg)
        elif len(mailbox.saved_msgs) > 0:
            # Start playing saved messages.  Since there are no new messages
            # use the current time as the time of the first new message.
            response.addSpeak(body="%d saved messages" %
                              len(mailbox.saved_msgs))
            msg = mailbox.saved_msgs[0]
            play_message(response, mailbox, 'saved', str(int(time.time())),
                         msg)
        else:
            response.addSpeak(body="You have no messages.")
            play_menu(response, mailbox)
    elif option == '3':
        response.addSpeak(
            body=
            "Record your personal greeting after the beep.  Press # to end recording."
        )
        response.addRecord(action="http://" + SERVER_NAME + "/vmgreeting/" +
                           mailbox.id(),
                           fileFormat=RECORD_FORMAT,
                           finishOnKey='#',
                           method='GET')
        response.addSpeak(body="Greeting not recorded")
        play_menu(response, mailbox)
    else:
        response.addSpeak(body="Unknown selection")
        play_menu(response, mailbox)

    print response.to_xml()
    xml_response = make_response(response.to_xml())
    xml_response.headers["Content-type"] = "text/xml"
    return xml_response
Beispiel #24
0
def vmdeposit(id, from_num, received):
    rec_file = request.args.get('RecordFile', '')

    mailbox = Mailbox(id)
    response = plivo.Response()

    if rec_file != '':
        # Message deposited, so copy it into the mailbox.
        mailbox.deposit_message(received, from_num, rec_file)
        response.addSpeak(body='Thank you')
    else:
        # No message received
        response.addSpeak(body='No message received')

    print response.to_xml()
    xml_response = make_response(response.to_xml())
    xml_response.headers["Content-type"] = "text/xml"
    return xml_response
Beispiel #25
0
def vm():
    forward_num = request.args.get('ForwardedFrom', '')
    from_num = request.args.get('From', '')

    response = plivo.Response()
    response.addWait(length='1')

    if forward_num != '':
        # Call is forwarded to a mailbox, so play the greeting and record the message.
        mailbox = Mailbox(forward_num)
        greeting = mailbox.get_greeting()
        if greeting != '':
            response.addPlay(body=greeting)
        else:
            response.addSpeak(
                body=
                "You have reached the voicemail of %s.  Please leave a message after the beep."
                % ",".join(mailbox.id()))
        response.addRecord(action="http://" + SERVER_NAME + "/vmdeposit/" +
                           mailbox.id() + "/" + from_num + "/" +
                           str(int(time.time())),
                           fileFormat=RECORD_FORMAT,
                           finishOnKey='#',
                           method='GET')
        response.addSpeak(body="Message not received")
    elif from_num != '':
        # Call is to a mailbox, so play the message status and any messages.
        mailbox = Mailbox(from_num)
        response.addSpeak(body="%d new messages and %d saved messages" %
                          (len(mailbox.new_msgs), len(mailbox.saved_msgs)))
        if len(mailbox.new_msgs) > 0:
            msg = mailbox.new_msgs[0]
            play_message(response, mailbox, 'new', str(msg.received), msg)
        else:
            play_menu(response, mailbox)
    else:
        response.addSpeak(body="Cannot find mailbox")

    print response.to_xml()
    xml_response = make_response(response.to_xml())
    xml_response.headers["Content-type"] = "text/xml"
    return xml_response
Beispiel #26
0
def speak_xml():
    """
    <Speak> : This element reads the text as 
    speech to the caller. It is very useful for dynamic text 
    that cannot be pre-recorded.

    <Wait> : This element waits silently for a specified number of 
    seconds. If <Wait> is the first element in a XML document, 
    Plivo will wait the specified number of seconds before 
    picking up the call
    """

    if request.method == 'GET':
        r = plivo.Response()
        r.addWait(length=2)
        r.addSpeak('Hi')

        response = make_response(r.to_xml())
        response.headers['Content-Type'] = 'text/xml'
        return response
Beispiel #27
0
def vmgreeting(id):
    rec_file = request.args.get('RecordFile', '')

    response = plivo.Response()
    mailbox = Mailbox(id)

    if rec_file != '':
        # Copy the greeting to the mailbox directory.
        mailbox.set_greeting(rec_file)
        response.addSpeak(
            body="Your personal greeting has been updated. Thank you")
        play_menu(response, mailbox)
    else:
        response.addSpeak(body="Greeting not updated.")
        play_menu(response, mailbox)

    print response.to_xml()
    xml_response = make_response(response.to_xml())
    xml_response.headers["Content-type"] = "text/xml"
    return xml_response
def conf_verify_input():
    if request.method == 'GET':
        user_input = request.args.get('Digits', '')
    elif request.method == 'POST':
        user_input = request.form.get('Digits', '')

    response = plivo.Response()
    if CONF_CODE != 'Digits':
        response.addSpeak(
            'There is no conference running with the given code.')
        response.addHangup()
    else:
        response.addConference(
            body='myconference',
            action='http://' + SERVER_NAME + '/conf-action/',
            callbackUrl='http://' + SERVER_NAME + '/conf-callback/')

    xml_response = make_response(response.to_xml())
    xml_response.headers["Content-type"] = "text/xml"
    return xml_response
Beispiel #29
0
def getdigits():
    if request.method == 'GET':
        digits = request.args.get('Digits', '')
    elif request.method == 'POST':
        digits = request.form.get('Digits', '')

    resp = plivo.Response()
    if digits:
        if digits == '1':
            text = u'This is a demo app'
            resp.addSpeak(body=text, language='en-US')
        elif digits == '2':
            text = u'Dies ist eine Demo-Anwendung.'
            resp.addSpeak(body=text, language='de-DE')
        else:
            text = u'Άγνωστη εισόδου'
            resp.addSpeak(body=text, language='el-GR')
    else:
        resp.addSpeak('No input received')

    ret_response = make_response(resp.to_xml())
    ret_response.headers["Content-type"] = "text/xml"
    return ret_response
Beispiel #30
0
def sip_route():
    try:
        print "SIP Route %s" % request.values.items()
        to = request.args.get('ForwardTo', None)
        _from = request.args.get('CLID', None)
        dial_music = request.args.get('DialMusic', "")
        disable_call = request.args.get('DisableCall', "")
        if request.method == "GET":
            if not to:
                to = request.args.get('To', None)
            if _from is None:
                _from = request.args.get('From', '')
            cname = request.args.get('CallerName', '')
            hangup = request.args.get('HangupCause', None)
        else:
            if not to:
                to = request.form.get('To', None)
            if _from is None:
                _from = request.form.get('From', '')
            cname = request.form.get('CallerName', '')
            hangup = request.form.get('HangupCause', None)

        if hangup:
            response = make_response("SIP Route hangup callback")
            return response

        r = plivo.Response()

        if not to:
            print "SIP Route cannot identify destination number"
            r.addHangup()
        else:
            if to[:4] == 'sip:':
                is_sip_user = True
            else:
                is_sip_user = False
            if is_sip_user and disable_call in ('all', 'sip'):
                print "SIP Route calling sip user is disabled : %s" % str(
                    disable_call)
                r.addHangup(reason="rejected")
            elif not is_sip_user and disable_call in ('all', 'number'):
                print "SIP Route calling number is disabled : %s" % str(
                    disable_call)
                r.addHangup(reason="rejected")
            else:
                print "SIP Route dialing %s" % str(to)
                if not dial_music:
                    d = r.addDial(callerId=_from, callerName=cname)
                else:
                    d = r.addDial(callerId=_from,
                                  callerName=cname,
                                  dialMusic=dial_music)
                if is_sip_user:
                    d.addUser(to)
                else:
                    d.addNumber(to)

        response = make_response(r.to_xml())
        response.headers['Content-Type'] = 'text/xml'
        return response

    except Exception, e:
        print str(e)
        return "ERROR %s" % str(e)