def select_from_payphones(payphones): res = Response() action = params_and_url_for( 'select_payphone_suburb', { 'phones': json.dumps([ format_lat_lon(payphone['properties']) for payphone in payphones ]) } ) with res.gather(numDigits='1', action=action) as g: g.say( '{} payphones were found. Please select your current suburb' 'from the following' .format(len(payphones)) ) for idx, payphone in enumerate(payphones, 1): g.say('Press {} for {}'.format( idx, payphone['properties']['SSC_NAME'] )) return res
def location(): res = Response() with res.gather(numDigits=ID_NUM_DIGITS, action=url_for('id_recieved')) as g: g.say( 'Please enter the {} digit payphone identification number'.format( humanize.apnumber(ID_NUM_DIGITS))) return res
def location(): res = Response() with res.gather(numDigits=str(ID_NUM_DIGITS), action=url_for('id_recieved')) as g: g.say( 'Please enter the {} digit payphone identification number' .format(humanize.apnumber(ID_NUM_DIGITS)), language='en-AU' ) return res
def select_payphone_suburb_response(idx, payphones): res = Response() try: payphone = payphones[idx - 1] # we 1 index for useability except IndexError: return res.say('Invalid suburb selection').hangup() logging.info('Selected payphone at latlon %s', payphone) res.say('Selected payphone') return do_for_payphone(res, payphone)
def select_from_payphones(payphones): res = Response() action = params_and_url_for('select_payphone_suburb', { 'phones': json.dumps([format_lat_lon(payphone) for payphone in payphones]) }) with res.gather(numDigits=1, action=action) as g: g.say('{} payphones were found. Please select your current suburb' 'from the following'.format(len(payphones))) for idx, payphone in enumerate(payphones, 1): g.say('Press {} for {}'.format(idx, payphone['SSC_NAME'])) return res
def select_payphone_suburb(): res = Response() idx = int(request.form['Digits']) payphones = json.loads(request.args['phones']) try: payphone = payphones[idx - 1] # we 1 index for useability except IndexError: return res.say('Invalid suburb selection').hangup() logging.info('Selected payphone at latlon %s', payphone) res.say('Selected payphone') return do_for_payphone(res, payphone)
def possibly_repeat(): digits = request.form['Digits'] if digits == '1': return payphone_found_response(request.args['Digits'], request.args['latlon']) return Response().say('Okay, goodbye').hangup()
def id_recieved_response(digits): res = Response() logging.info('Digits: "%s"', digits) if not re.match(r'\d{%d}' % ID_NUM_DIGITS, digits): return res.say('Invalid eye d number').hangup() if digits == ''.join(map(str, range(1, ID_NUM_DIGITS + 1))): return res.play( '/static/Gorillaz%20-%20Film%20Music%20(Official%20Visual).mp3' ).hangup() # insert a wildcard where the punctuation is in the phone id payphone_id = digits[:-1] + '%' + digits[-1] logging.info('Looking for payphone with id like: "%s"', payphone_id) payphones = payphone_client.by_cabinet_id(payphone_id) payphones = [ CaseInsensitiveDict(payphone['properties']) for payphone in payphones ] if not payphones: return res.say('Payphone could not be found').hangup() if len(payphones) > 1: return select_from_payphones(payphones) else: properties = CaseInsensitiveDict(payphones[0]) message = 'Payphone found in {}'.format(properties['SSC_Name']) res.say(message) logging.info(message) return do_for_payphone(res, format_lat_lon(properties))
def id_recieved(): res = Response() digits = request.form['Digits'] logging.info('Digits: "%s"', digits) if not re.match(r'\d{%d}' % ID_NUM_DIGITS, digits): return res.say('Invalid eye d number').hangup() if digits == ''.join(map(str, range(1, ID_NUM_DIGITS+1))): return res.play( '/static/Gorillaz%20-%20Film%20Music%20(Official%20Visual).mp3' ).hangup() payphone_id = digits[:ID_NUM_DIGITS - 1] + '%' + digits[-1] logging.info('Looking for payphone with id like: "%s"', payphone_id) payphones = payphone_client.by_cabinet_id(payphone_id) if not payphones: return res.say('Payphone could not be found').hangup() if len(payphones) > 1: return select_from_payphones(payphones) else: properties = payphones[0]['properties'] message = 'Payphone found in {}'.format(properties['SSC_Name']) res.say(message) logging.info(message) return do_for_payphone(res, format_lat_lon(payphones[0]['properties']))
def payphone_found(): res = Response() digits = request.form['Digits'] if digits not in {'1', '2'}: return res.say('Invalid input').hangup() mode = {'1': 'walking', '2': 'transit'}[digits] from_ = request.args['latlon'] to = ADDRESSTO departure_time = datetime.now() logging.info( 'Travelling from %s to "%s" at %s using %s', from_, to, departure_time, mode ) directions_result = gmaps.directions( from_, to, mode=mode, departure_time=departure_time ) if not directions_result: return res.say('No routes could be found').hangup() directions_result = directions_result[0] for leg in directions_result['legs']: for step in leg['steps']: if step['travel_mode'] == 'TRANSIT': instruction = parse_transit_step(step) else: instruction = parse_instruction(step['html_instructions']) res.say(instruction) res.pause(length=0.5) res.say("End of instructions") return res
def error(exc=None): return (Response().say( "I'm sorry, something seems to have gone wrong. Goodbye").hangup())
def payphone_found_response(digits, from_): res = Response() if digits not in {'1', '2'}: return res.say('Invalid input').hangup() mode = {'1': 'walking', '2': 'transit'}[digits] to = ADDRESSTO departure_time = datetime.now() logging.info('Travelling from %s to "%s" at %s using %s', from_, to, departure_time, mode) directions_result = gmaps.directions(from_, to, mode=mode, departure_time=departure_time) if not directions_result: return res.say('No routes could be found').hangup() directions_result = directions_result[0] for leg in directions_result['legs']: for step in leg['steps']: if step['travel_mode'] == 'TRANSIT': instruction = parse_transit_step(step) else: instruction = parse_instruction(step['html_instructions']) res.say(instruction) res.pause(length=1) res.say("End of instructions") action = params_and_url_for('possibly_repeat', { 'latlon': from_, 'Digits': digits }) with res.gather(numDigits=1, action=action) as gat: gat.say('Enter 1 to repeat instructions, or hang up.', ) return res