def handle_dialog(res, req): user_id = req['session']['user_id'] if req['session']['new']: res['response'][ 'text'] = 'Привет! Я могу сказать в какой стране город или сказать расстояние между городами!' return cities = get_cities(req) if len(cities) == 0: res['response']['text'] = 'Ты не написал название не одного города!' elif len(cities) == 1: res['response']['text'] = 'Этот город в стране - ' + get_geo_info( cities[0], "country") elif len(cities) == 2: distance = get_distance(get_geo_info(cities[0], "coordinates"), get_geo_info(cities[1], "coordinates")) res['response']['text'] = 'Расстояние между этими городами: ' + str( round(distance)) + ' км.' else: res['response']['text'] = 'Слишком много городов!'
def handle_dialog(res, req): user_id = req['session']['user_id'] if req['session']['new']: res['response']['text'] = 'Привет! Назови свое имя!' # создадим словарь в который в будущем положим имя пользователя sessionStorage[user_id] = {'first_name': None} return if sessionStorage[user_id]['first_name'] is None: # в последнем его сообщение ищем имя. first_name = get_first_name(req) # если не нашли, то сообщаем пользователю что не расслышали. if first_name is None: res['response']['text'] = \ 'Не расслышала имя. Повтори, пожалуйста!' # если нашли, то приветствуем пользователя. else: sessionStorage[user_id]['first_name'] = first_name res['response'][ 'text'] = 'Приятно познакомиться, ' + first_name.title() \ + '. Я - Алиса. Я могу сказать в какой стране город или сказать расстояние между городами!' else: cities = get_cities(req) if len(cities) == 0: res['response']['text'] = sessionStorage[user_id][ 'first_name'] + 'Ты не написал название не одного города!' elif len(cities) == 1: res['response']['text'] = sessionStorage[user_id][ 'first_name'] + 'Этот город в стране - ' + get_geo_info( cities[0], 'country') elif len(cities) == 2: distance = get_distance(get_geo_info(cities[0], "coordinates"), get_geo_info(cities[1], "coordinates")) res['response']['text'] = sessionStorage[user_id][ 'first_name'] + 'Расстояние между этими городами: ' + str( round(distance)) + ' км.' else: res['response']['text'] = sessionStorage[user_id][ 'first_name'] + 'Слишком много городов!'
def handle_dialog(res, req): user_id = req['session']['user_id'] if req['session']['new']: res['response']['text'] = 'Привет! Назови своё имя!' sessionStorage[user_id] = { 'first_name': None, # здесь будет храниться имя 'game_started': False # здесь информация о том, что пользователь начал игру. По умолчанию False } return if sessionStorage[user_id]['first_name'] is None: first_name = get_first_name(req) if first_name is None: res['response']['text'] = 'Не расслышала имя. Повтори, пожалуйста!' else: sessionStorage[user_id]['first_name'] = first_name # создаём пустой массив, в который будем записывать города, которые пользователь уже отгадал sessionStorage[user_id]['guessed_cities'] = [] # как видно из предыдущего навыка, сюда мы попали, потому что пользователь написал своем имя. # Предлагаем ему сыграть и два варианта ответа "Да" и "Нет". res['response']['text'] = f'Приятно познакомиться, {first_name.title()}. Я могу сказать в какой стране город или сказать расстояние между городами!' else: name = sessionStorage[user_id]['first_name'].title() cities = get_cities(req) if len(cities) == 0: res['response']['text'] = f'{name}, вы не написали название ни одного города!' elif len(cities) == 1: res['response']['text'] = f'{name}, этот город в стране ' + get_geo_info(cities[0], 'country') elif len(cities) == 2: distance = get_distance(get_geo_info(cities[0], 'coordinates'), get_geo_info(cities[1], 'coordinates')) res['response']['text'] = f'{name}, расстояние между этими городами: ' + str(round(distance)) + ' км.' else: res['response']['text'] = f'{name}, cлишком много городов!'
def handle_dialog(res, req): user_id = req['session']['user_id'] if req['session']['new']: res['response']['text'] = \ 'Привет! Я могу показать город или сказать расстояние между городами!' return # Получаем города из нашего cities = get_cities(req) if not cities: res['response']['text'] = 'Ты не написал название не одного города!' elif len(cities) == 1: res['response']['text'] = 'Этот город в стране - ' + \ get_geo_info(cities[0], 'country') elif len(cities) == 2: distance = get_distance(get_geo_info(cities[0], 'coordinates'), get_geo_info(cities[1], 'coordinates')) res['response']['text'] = 'Расстояние между этими городами: ' + \ str(round(distance)) + ' км.' else: res['response']['text'] = 'Слишком много городов!'
def process_request(self, request): """ Save or update geo info in session """ fqdn_or_ip = getattr(defaults, 'GEOIP_DEBUG_DOMAIN_OR_IP', get_ip_address(request)) try: if request.session['geo_info']['fqdn_or_ip'] == fqdn_or_ip: return None except: pass geo_info = get_geo_info(request) request.session['geo_info'] = geo_info request.session.modified = True return None
def geoaware(request): """ Bring GeoInfo into the context if GeoIP is configured for city or country. geo_info = { 'fqdn_or_ip': '', 'city': '', 'continent_code': '', 'region': '', 'charset': 0, 'area_code': 0, 'longitude': 0.0, 'country_code3': '', 'latitude': 0.0, 'postal_code': None, 'dma_code': 0, 'country_code': '', 'country_name': '', } """ cxt = {} geo_info = get_geo_info(request) cxt = {'geo_info': geo_info} return cxt
def handle_dialog(res, req): global city_arr user_id = req['session']['user_id'] if req['session']['new']: logging.warning(user_id) sessionStorage[user_id] = {} sessionStorage[user_id]['first_name'] = None sessionStorage[user_id]['last'] = None sessionStorage[user_id]['end'] = False logging.warning(sessionStorage) res['response']['text'] = \ 'Привет! Я могу играть с тобой в города! По возможности в скобках я буду\n' +\ ' указывать название города на языке страны, в которой находится город.\n' + '\nНазови свое имя.' return logging.warning(sessionStorage) if sessionStorage[user_id]['first_name'] is None: for entity in req['request']['nlu']['entities']: if entity['type'] == 'YANDEX.FIO': sessionStorage[user_id]['first_name'] = entity['value'].get( 'first_name', None) break logging.warning(sessionStorage) if sessionStorage[user_id]['first_name'] is None: res['response']['text'] = \ 'Не расслышала имя, повтори.' else: sessionStorage[user_id]['first_name'] = sessionStorage[user_id][ 'first_name'].title() res['response']['text'] = \ 'Приятно познакомиться, ' + sessionStorage[user_id]['first_name'] + '. Ты начинаешь!' return res['response']['buttons'] = [{'title': 'Заново', 'hide': True}] if 'заново' in req['request']['original_utterance'].lower(): sessionStorage[user_id]['end'] = False sessionStorage[user_id]['last'] = None city_arr = all_cities[:] res['response']['text'] = 'Хорошо ' + sessionStorage[user_id][ 'first_name'] + '. Ты начинаешь!' return cities = get_cities(req) if sessionStorage[user_id]['end']: for i in ['хорошо', 'ладно', 'давай', 'да']: if i in req['request']['original_utterance'].lower(): sessionStorage[user_id]['end'] = False sessionStorage[user_id]['last'] = None city_arr = all_cities[:] res['response']['text'] = 'Хорошо ' + sessionStorage[user_id][ 'first_name'] + '. Ты начинаешь!' else: res['response']['text'] = 'Ну и ладно' res['response']['end_session'] = True return if not cities: res['response']['text'] = sessionStorage[user_id][ 'first_name'] + ', ты не написал название города!' elif len(cities) == 1: if cities[0][0] == sessionStorage[user_id][ 'last'] or sessionStorage[user_id]['last'] is None: if cities[0] in all_cities: if cities[0] in city_arr: city_arr.pop(city_arr.index(cities[0])) if cities[0][-1] == 'ь' or cities[0][-1] == 'ы': city = get_city(cities[0][-2]) else: city = get_city(cities[0][-1]) if city: res['response']['card'] = {} res['response']['card']['type'] = 'BigImage' res['response']['card']['image_id'] = get_picture( get_geo_info(city)) res['response'][ 'text'] = 'Здесь должна была быть картинка города ' + city.title( ) if city[-1] == 'ь' or city[-1] == 'ы': if get_city(city[-2], alice=True): name = get_city_name(city.title()) if name: x = city.title( ) + ' (' + name + ')' + ', тебе на ' + city[ -2] else: x = city.title() + ', тебе на ' + city[-2] sessionStorage[user_id]['last'] = city[-2] else: name = get_city_name(city.title()) if name: x = city.title( ) + ' (' + name + ')' + '. На ' + city[ -2] + ' больше нет городов, я победила)\n Хочешь сыграть еще?' else: x = city.title() + '. На ' + city[ -2] + ' больше нет городов, я победила)\n Хочешь сыграть еще?' sessionStorage[user_id]['end'] = True else: if get_city(city[-1], alice=True): name = get_city_name(city.title()) if name: x = city.title( ) + ' (' + name + ')' + ', тебе на ' + city[ -1] else: x = city.title() + ', тебе на ' + city[-1] sessionStorage[user_id]['last'] = city[-1] else: name = get_city_name(city.title()) if name: x = city.title( ) + ' (' + name + ')' + '. На ' + city[ -1] + ' больше нет городов, я победила)\n Хочешь сыграть еще?' else: x = city.title() + '. На ' + city[ -1] + ' больше нет городов, я победила)\n Хочешь сыграть еще?' sessionStorage[user_id]['end'] = True logging.warning(x) res['response']['card']['title'] = x else: res['response']['text'] = 'Я сдаюсь, ты победил(' sessionStorage[user_id]['end'] = True else: res['response']['text'] = sessionStorage[user_id][ 'first_name'] + ', этот город был! Попробуй другой)' else: res['response']['text'] = sessionStorage[user_id][ 'first_name'] + ', я не знаю такого города! Попробуй другой)' else: res['response'][ 'text'] = 'Город должен быть на букву ' + sessionStorage[ user_id]['last'] else: res['response']['text'] = sessionStorage[user_id][ 'first_name'] + ', слишком много городов!' return
def play_game(res, req): user_id = req['session']['user_id'] attempt = sessionStorage[user_id]['attempt'] if attempt == 1: city = random.choice(list(cities)) while city in sessionStorage[user_id]['guessed_cities']: city = random.choice(list(cities)) sessionStorage[user_id]['city'] = city sessionStorage[user_id]['country'] = get_geo_info(city, "country") res['response']['card'] = {} res['response']['card']['type'] = 'BigImage' res['response']['card']['title'] = 'Что это за город?' res['response']['card']['image_id'] = cities[city][attempt - 1] res['response'][ 'tts'] = '<speaker audio="dialogs-upload/68b7790c-c028-4717-9c4b-0a5a88b4ec91/74290c64-3094-4029-a02c-4880618e11f9.opus">' res['response']['text'] = 'Тогда сыграем!' else: if not sessionStorage[user_id]['guess_city']: city = sessionStorage[user_id]['city'] if get_city(req) == city: res['response'][ 'text'] = 'Правильно! А в какой стране этот город?' sessionStorage[user_id]['game_started'] = True sessionStorage[user_id]['guess_city'] = True sessionStorage[user_id]['attempt'] = 2 return else: if attempt == 3: res['response'][ 'text'] = f'Вы, {sessionStorage[user_id]["first_name"]}, пытались. Это {city.title()}. ' \ f'Сыграем ещё?' sessionStorage[user_id]['game_started'] = False sessionStorage[user_id]['guess_city'] = False sessionStorage[user_id]['guessed_cities'].append(city) return else: res['response']['card'] = {} res['response']['card']['type'] = 'BigImage' res['response']['card'][ 'title'] = f'Неправильно. Вот тебе, {sessionStorage[user_id]["first_name"]}, ' \ f'дополнительное фото' res['response']['card']['image_id'] = cities[city][attempt - 1] res['response'][ 'text'] = f'А вот и не угадал, {sessionStorage[user_id]["first_name"]}!' else: country = sessionStorage[user_id]['country'] if get_country(req) == country.lower(): res['response']['text'] = 'Правильно! Сыграем ещё раз?' sessionStorage[user_id]['guessed_cities'].append( sessionStorage[user_id]['city']) sessionStorage[user_id]['game_started'] = False sessionStorage[user_id]['guess_city'] = False res['response']['buttons'] = [{ 'title': 'Да', 'hide': True }, { 'title': 'Нет', 'hide': True }, { 'title': 'Покажи город на карте', "url": f"https://yandex.ru/maps/?mode=search&text={sessionStorage[user_id]['city']}", 'hide': True }] else: res['response'][ 'text'] = f'Вы, {sessionStorage[user_id]["first_name"]}, пытались. Это {country}. Сыграем ещё?' sessionStorage[user_id]['game_started'] = False sessionStorage[user_id]['guess_city'] = False sessionStorage[user_id]['guessed_cities'].append( sessionStorage[user_id]['city']) return sessionStorage[user_id]['attempt'] += 1
def handle_dialog(res, req): try: user_id = req['session']['user_id'] # Обработка команды "Помощь" в зависимости от того, на какой стадии пользователь if 'помощь' in req['request']['nlu']['tokens']: if sessionStorage[user_id]['first_name'] is None: res['response']['text'] = 'Представьтесь, пожалуйста.' elif sessionStorage['city'] is None: first_name = sessionStorage[user_id]['first_name'] res['response']['text'] = f'{first_name.title()}, введите город, ' \ f'в котором хотите искать организацию.' elif sessionStorage['work'] == 0: first_name = sessionStorage[user_id]['first_name'] res['response']['text'] = '{}, используйте "Поиск [Адрес/Название организации]",' \ ' чтобы найти здание или компанию, ближайшую к центру' \ ' города {} или к дому, если он указан("Дом [Адрес]",' \ ' чтобы установить точку на дом для поиска расстояния' \ '.)'.format(first_name, sessionStorage['city']) res['response']['buttons'] = [ { 'title': 'Покажи адрес дома', 'hide': True }, { 'title': 'Удали дом', 'hide': True } ] elif sessionStorage['work'] == 1: first_name = sessionStorage[user_id]['first_name'] res['response'][ 'text'] = f'{first_name.title()}, используйте кнопки для ' \ f'получения информации об организации.' res['response']['buttons'] = [ { 'title': 'Адрес', 'hide': True }, { 'title': 'Телефон', 'hide': True }, { 'title': 'Время', 'hide': True }, { 'title': 'Индекс', 'hide': True }, { 'title': 'Расстояние от дома', 'hide': True }, { 'title': 'Покажи на карте', 'hide': True }, { 'title': 'Обратно', 'hide': True }, { 'title': 'Помощь', 'hide': False } ] return # Показываем пользователю данные, если включен режим работы if sessionStorage['work'] == 1: try: name = sessionStorage['organization']['properties']['CompanyMetaData']['name'] except: name = '"Компания"' if 'время' in req['request']['nlu']['tokens']: try: peremennaya = \ sessionStorage[user_id]['organization']["properties"]["CompanyMetaData"]["Hours"]["text"] res['response']['text'] = 'Компания {} работает {}'.format(name, peremennaya) except: res['response']['text'] = 'Я не смогла получить часы работы компании {}'.format(name) elif 'телефон' in req['request']['nlu']['tokens']: try: peremennaya = \ sessionStorage['organization']['properties']['CompanyMetaData']['Phones'][0]['formatted'] res['response']['text'] = 'Телефон компании {} - {}'.format(name, peremennaya) except: res['response']['text'] = 'Я не смогла получить телефон компании {}'.format(name) elif 'адрес' in req['request']['nlu']['tokens']: try: peremennaya = sessionStorage['organization']['properties']['CompanyMetaData']['address'] res['response']['text'] = '{} находится по адресу {}'.format(name, peremennaya) except: res['response']['text'] = 'Я не смогла получить адрес компании {}'.format(name) elif 'индекс' in req['request']['nlu']['tokens']: try: peremennaya = sessionStorage['organization']['properties']['CompanyMetaData']['postalCode'] res['response']['text'] = 'Индекс компании {} - {}'.format(name, peremennaya) except: res['response']['text'] = 'Я не смогла получить индекс компании {}'.format(name) elif 'покажи на карте' == req['request']['original_utterance'].lower(): res['response']['text'] = 'Лови ссылку! https://yandex.ru/maps/?mode=search&text={}'.format( '+'.join(sessionStorage['organization']['properties']['CompanyMetaData']['address'].split())) elif 'обратно' in req['request']['nlu']['tokens']: sessionStorage['work'] = 0 res['response']['text'] = 'Введи "Поиск [Адрес/Название организации]", чтобы на' \ 'йти здание или компанию, ближайшую к центру города {}' \ ' или к дому, если он указан("Дом [Адрес]", чтобы' \ ' установить точку на дом для поиска ' \ 'расстояния.)'.format(sessionStorage['city']) res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False }, { 'title': 'Покажи адрес дома', 'hide': True }, { 'title': 'Удали дом', 'hide': True }, { 'title': 'Обратно', 'hide': True } ] sessionStorage['company'] = '' sessionStorage['organization'] = None return elif 'расстояние' in req['request']['nlu']['tokens']: if sessionStorage['address']: dist = get_distance([float(x) for x in sessionStorage['ll'].split(',')], [float(x) for x in sessionStorage['coord'].split(',')]) res['response']['text'] = 'От твоего дома до организации примерно {} метра'.format(dist) else: res['response'][ 'text'] = 'Для подсчёта расстояния мне нужен адрес дома! ' \ 'Нажми кнопку "Обратно", потом укажи адрес дома в' \ ' формате "Дом [Адрес]" и возвращайся.' else: res['response'][ 'text'] = 'Не поняла тебя. Я могу показать только то, что написано на' \ ' кнопках, используй их!' res['response']['buttons'] = [ { 'title': 'Адрес', 'hide': True }, { 'title': 'Телефон', 'hide': True }, { 'title': 'Время', 'hide': True }, { 'title': 'Индекс', 'hide': True }, { 'title': 'Расстояние от дома', 'hide': True }, { 'title': 'Покажи на карте', "url": 'https://yandex.ru/maps/?mode=search&text={}'.format( '+'.join(sessionStorage['organization']['properties']['CompanyMetaData']['address'].split())), 'hide': True }, { 'title': 'Обратно', 'hide': True } ] return else: # Знакомимся, если пользователь только начал общение if req['session']['new']: res['response']['text'] = 'Привет! Давай познакомимся! Как тебя зовут?' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] sessionStorage[user_id] = { 'first_name': None, 'game_started': False } return # Определяем город, если уже познакомились if sessionStorage[user_id]['first_name'] is None and sessionStorage['city'] is None: first_name = get_first_name(req) if first_name is None: res['response']['text'] = 'Не расслышала имя. Повтори, пожалуйста!' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] else: sessionStorage[user_id]['first_name'] = first_name res['response'][ 'text'] = f'{first_name.title()}, напиши мне любой город России и ' \ f'сможешь узнать о нём информацию.' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] # Определяем город, если пользователь представился или решил его поменять else: first_name = sessionStorage[user_id]['first_name'] if sessionStorage['city'] is None: city = get_cities(req) if len(city) == 0: res['response'][ 'text'] = f'Я не поняла названия ни одного города, ' \ f'{first_name.title()}! Попробуй ещё раз.' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] sessionStorage['city'] = None elif len(city) == 1: country = get_geo_info(city[0], 'country') if country != 'Россия': res['response'][ 'text'] = f'Извини, {first_name.title()}, но этот город' \ f' находится не в России! Введи другой.' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] sessionStorage['city'] = None else: res['response']['text'] = 'Введи "Поиск [Адрес/Название организации]' \ '", чтобы найти здание или компанию, ' \ 'ближайшую к центру города или к дому, ' \ 'если он указан("Дом [Адрес]", чтобы ' \ 'установить точку на дом для поиска' \ ' расстояния.)' geocoder_request = "http://geocode-maps.yandex.ru/1.x/" \ "?geocode={}&format=json".format(city) response = requests.get(geocoder_request) json_response = response.json() toponym = json_response["response"]["GeoObjectCollection"]["featureMember"][0]["GeoObject"] toponym_coodrinates = toponym["Point"]["pos"] sessionStorage['ll'] = ','.join(toponym_coodrinates.split()) sessionStorage['archive'] = ','.join(toponym_coodrinates.split()) sessionStorage['city'] = city[0] sessionStorage['address'] = '' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False }, { 'title': 'Покажи адрес дома', 'hide': True }, { 'title': 'Удали дом', 'hide': True }, { 'title': 'Обратно', 'hide': True } ] else: sessionStorage['city'] = None res['response']['text'] = f'Слишком много городов, ' \ f'{first_name.title()}! Выбери только 1!' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] else: # Удаляем данные о городе, если пользователь дал команду if 'обратно' in req['request']['nlu']['tokens']: sessionStorage['city'] = None sessionStorage['address'] = None res['response'][ 'text'] = f'{first_name.title()}, напиши мне любой город ' \ f'России и сможешь узнать о нём информацию.' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] # Устанавливаем точку на дом, увидев ключевое слово elif 'дом' in req['request']['nlu']['tokens'][0]: # Запрещаем, если дом уже есть if sessionStorage['address']: res['response']['text'] = f'{first_name.title()}, ' \ f'сначала выселись из предыдущего!' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False }, { 'title': 'Покажи адрес дома', 'hide': True }, { 'title': 'Удали дом', 'hide': True }, { 'title': 'Обратно', 'hide': True } ] # Не запрещаем, если дома нет else: f = True for entity in req['request']['nlu']['entities']: if entity['type'] == 'YANDEX.GEO': if 'house_number' in entity['value'].keys(): f = False sessionStorage['address'] = ' '.join(req['request']['nlu']['tokens'][1:]) geocoder_request = "http://geocode-maps.yandex.ru/1.x/?geocode={}&format=json" \ .format( '+'.join([x.strip(',') for x in req['request']['nlu']['tokens'][1:]])) sessionStorage['address'] = ' '.join(req['request']['nlu']['tokens'][1:]) response = requests.get(geocoder_request) json_response = response.json() toponym = json_response["response"]["GeoObjectCollection"]["featureMember"][0][ "GeoObject"] toponym_coodrinates = toponym["Point"]["pos"] sessionStorage['ll'] = ','.join(toponym_coodrinates.split()) res['response']['text'] = 'Дом по адресу {} добавлен!'.format( sessionStorage['address']) res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False }, { 'title': 'Покажи адрес дома', 'hide': True }, { 'title': 'Удали дом', 'hide': True }, { 'title': 'Обратно', 'hide': True } ] if f: res['response'][ 'text'] = f'Я не нашла ни одного дома, ' \ f'{first_name.title()}! Попробуй ещё раз.' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] # Печатаем адрес дома, если он указан elif 'покажи адрес дома' == req['request']['original_utterance'].lower(): if sessionStorage['address']: res['response']['text'] = 'Твой дом находится по адресу {}'.format( sessionStorage['address']) else: res['response']['text'] = f'{first_name.title()}, ' \ f'у тебя нет дома! ノ( º _ ºノ)' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False }, { 'title': 'Удали дом', 'hide': True }, { 'title': 'Обратно', 'hide': True } ] # Удаляем дом, если он есть elif 'удали дом' == req['request']['original_utterance'].lower(): if sessionStorage['address']: res['response']['text'] = 'Твой дом по адресу {}' \ ' удалён!'.format(sessionStorage['address']) sessionStorage['address'] = '' sessionStorage['ll'] = sessionStorage['archive'] else: res['response']['text'] = f'{first_name.title()}, ' \ f'у тебя нет дома! ノ( º _ ºノ)' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] # Ищем организацию, если увидели ключевое слово elif 'поиск' in req['request']['nlu']['tokens']: sessionStorage['company'] = '+'.join(req['request']['nlu']['tokens'][1:]) search_params = { "apikey": sessionStorage['api'], "text": sessionStorage['company'], "lang": "ru_RU", "ll": sessionStorage['ll'], "type": "biz" } response = requests.get(sessionStorage['search'], params=search_params) json_response = response.json() sessionStorage['organization'] = json_response["features"][0] if sessionStorage['organization']: address = '+'.join(sessionStorage['organization']['properties']['CompanyMetaData']['address'].split()) geocoder_request = "http://geocode-maps.yandex.ru/1.x/?geocode={}&format=json".format( address) try: response = requests.get(geocoder_request) if response: json_response = response.json() print(json_response) toponym = json_response["response"]["GeoObjectCollection"]["featureMember"][0][ "GeoObject"] toponym_coodrinates = toponym["Point"]["pos"] sessionStorage['coord'] = ','.join(toponym_coodrinates.split()) print(sessionStorage['coord']) else: print("Ошибка выполнения запроса:") print(geocoder_request) print("Http статус:", response.status_code, "(", response.reason, ")") except: print("Запрос не удалось выполнить. Проверьте подключение к сети Интернет.") # sessionStorage['coord'] = sessionStorage['organization'] sessionStorage['work'] = 1 res['response'][ 'text'] = f'Организация успешно найдена, ' \ f'{first_name.title()}. Что подсказать?' res['response']['buttons'] = [ { 'title': 'Адрес', 'hide': True }, { 'title': 'Телефон', 'hide': True }, { 'title': 'Время', 'hide': True }, { 'title': 'Индекс', 'hide': True }, { 'title': 'Расстояние от дома', 'hide': True }, { 'title': 'Покажи на карте', "url": 'https://yandex.ru/maps/?mode=search&text={}'.format('+'.join( sessionStorage['organization']['properties']['CompanyMetaData'][ 'name'].split())), 'hide': True }, { 'title': 'Обратно', 'hide': True }, { 'title': 'Помощь', 'hide': False } ] else: res['response'][ 'text'] = f'Я не смогла найти организацию, ' \ f'{first_name.title()}. Попробуй ещё раз.' else: res['response']['text'] = f'{first_name.title()}, произошла ' \ f'непредвиденная ошибка. Возможно, вы ' \ f'пытаетесь меня сломать, а так делать ' \ f'заперещено. Общайтесь хорошо или я обижусь!' res['response']['buttons'] = [ { 'title': 'Помощь', 'hide': False } ] except: res['response'][ 'text'] = 'Если вы видите эту ошибку, то вы конкретно так' \ ' сломали Алису, подорожник вряд ли поможет. ' \ 'Напишите vk.com/drmattsuu'