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'] = 'Слишком много городов!'
Exemple #2
0
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'] + 'Слишком много городов!'
Exemple #3
0
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лишком много городов!'
Exemple #4
0
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
Exemple #6
0
 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
Exemple #8
0
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
Exemple #10
0
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'