Example #1
0
def within_kremlin(appState, sessionState):
  txt = 'Вы на территории Новгодоского Кремля. Рассказать про Кремль?'
  sessionState['context'] = 'within_kremlin'
  return make_only_response(
    text=txt,
    buttons=ph.hi['buttons']
  )
Example #2
0
def around_kremlin(appState, sessionState):
  txt = 'Вы рядом с Новгородским Кремлём. Подойдите к Кремлёвским воротам и скажите "Я возле ворот"'
  sessionState['context'] = 'around_kremlin'
  return make_only_response(
    text=txt,
    buttons=[{ 'title': "Я возле ворот", 'hide': True }]
  )
Example #3
0
def kupol_story(state):
  txt = 'Купол этот не простой...Идём к Кащею?'
  state['context'] = 'kupol_story'
  return make_only_response(
    text=txt,
    buttons=ph.hi['buttons']
  )
Example #4
0
def begin(state):
  txt = 'Жил был Сдако... Рассказать про купол?'
  state['context'] = 'begin'
  return make_only_response(
    text=txt,
    buttons=ph.hi['buttons']
  )
Example #5
0
def give_direction(data, sessionState, appState):
    # Контент для ответа
    txt = data[0]
    tts = data[1]
    # картинка??
    buttons = [
        {
            'title': "Повтори",
            'hide': False
        },
        {
            'title': "Да",
            'hide': False
        },
        {
            'title': "Нет",
            'hide': False
        },
    ]

    # Работа со стейтом
    sessionState['nav_context'] = 'give_direction'

    nav_step = sessionState.get('nav_step')
    if nav_step is None or nav_step == 'null':
        sessionState['nav_step'] = 1
    else:
        sessionState['nav_step'] += 1

    return make_only_response(
        text=txt,
        # tts=tts,
        buttons=buttons)
Example #6
0
def ask_geo(state):
  state['geo_asked'] = True; 
  state['context'] = 'ask_geo'; 
  return make_only_response(
    text = ph.needgeo['txt'],
    tts = ph.needgeo['tts'],
    directives = True,
  )
Example #7
0
def somewhere(appState, sessionState):
  txt = 'Вы очень далеко от Новгородского Кремля. Продолжить в режиме повествования?'
  sessionState['context'] = 'somewhere'
  sessionState['story_mode'] = True
  appState['step'] = 0
  return make_only_response(
    text=txt,
    buttons=ph.hi['buttons']
  )
Example #8
0
def welcome(state, appStateClear=False, appState=False):
  state['context'] = 'welcome'
  if appStateClear:
    for key in appState:
      appState[key]='null'
  return make_only_response(
    text=ph.hi['txt'],
    buttons=ph.hi['buttons']
  )
Example #9
0
def quest(appState, sessionState):
  sessionState['context'] = 'quest'
  appState['step'] = 0
  appState['place_seen'] = 'kupol'
  to_target = sights['kupol']['to_tip_name'] 
  txt = 'Покатился клубок к {}. Следуй за ним. Как дойдешь - скажи "Я на месте". А пока идём могу тебе про это место рассказать. Интересно?'.format(to_target)
  return make_only_response(
    text=txt,
    buttons=ph.quest['buttons']
  )




  
Example #10
0
def give_direction_last(data, sessionState, appState, add_text=None):
    # Контент для ответа
    if add_text is not None:
        txt = add_text[0] + '\n' + data[0]
        tts = add_text[1] + '\n' + data[1]
    else:
        txt = data[0]
        tts = data[1]

    # картинка??
    buttons = [
        {
            'title': "Где я?",
            'hide': False
        },
        {
            'title': "Я на месте",
            'hide': False
        },
        {
            'title': "Повтори",
            'hide': False
        },
    ]

    # Работа со стейтом
    sessionState['nav_context'] = 'give_direction_last'

    nav_step = sessionState.get('nav_step')
    if nav_step is None or nav_step == 'null':
        sessionState['nav_step'] = 1
    else:
        sessionState['nav_step'] += 1

    return make_only_response(
        text=txt,
        # tts=tts,
        buttons=buttons)
Example #11
0
def bye():
  return make_only_response(
    text='Пока-пока',
    end_session=True
  )
Example #12
0
def fallback(command):
  txt='Вы молвили {}. Команда не распознана. Поробуйте ещё раз'.format(command)
  return make_only_response(
    text = txt,
  )
Example #13
0
def continue_game(state):
  state['context'] = 'continue_game'; 
  return make_only_response(
    text = 'У вас есть сохранённый прогресс. Продолжить?',
    buttons=ph.hi['buttons']
  )
Example #14
0
def say_help():
  txt=ph.help_['txt']
  return make_only_response(
    text=txt
  )
Example #15
0
def say(txt="wawa"):
  return make_only_response(
    text=txt
  )
Example #16
0
def navigation(appState, sessionState, intents, user_location, event={}):
    # Запоминаем ключевые данные из state
    step = sessionState.get('nav_step', 0)
    place_seen = appState.get('place_seen')
    place = quest_order[
        0] if place_seen is None or place_seen == 'null' else place_seen
    nav_context = sessionState.get('nav_context')
    story_mode = sessionState.get('story_mode')

    sessionState['context'] = 'navigation'
    appState['place_seen'] = place

    data = find_object[place]

    # Сказать полюзователю куда идти
    if step == 0:
        return give_direction(data[0], sessionState, appState)

    # Рассказать про место, куда он идёт
    if nav_context == 'give_direction':
        if 'YANDEX.CONFIRM' in intents:
            return tell_story(data[1], sessionState, appState)
        if 'YANDEX.REJECT' in intents:
            return give_direction_last(data[3], sessionState, appState)

    # Историческая справка, про то куда он идёт
    if nav_context == 'tell_story':
        if 'YANDEX.CONFIRM' in intents:
            return give_direction_last(data[3],
                                       sessionState,
                                       appState,
                                       add_text=data[2])
        if 'YANDEX.REJECT' in intents:
            return give_direction_last(data[3], sessionState, appState)

    # обработка "Где я?"
    if 'where_am_i' in intents:
        if user_location is not None and user_location[
                'accuracy'] < 50 and story_mode == False:
            # если геолокация есть и погрешность не больше 50 метров мы не в режиме истории
            target = sights[place]
            distance = get_distance_to_object(user_location,
                                              target['location'])
            if distance > 50:
                return give_direction_last(data[4], sessionState, appState)
            if distance < 50:
                return give_direction_last(data[5], sessionState, appState)
        else:
            if story_mode == True:
                # если мы в режиме истории, то переходим к следующему объекту
                return give_direction_last(data[5], sessionState, appState)
            else:
                # если геолокации нет или слишком большая погредшность, то даём подсказку
                return give_direction_last(data[4], sessionState, appState)

    # обработка "Я на месте"
    if 'i_am_here' in intents:
        return person(event=event,
                      step=appState['step'],
                      place=appState['place_seen'],
                      status=appState.get('status'))

    return make_only_response(text='жопа-жопа-жопа-жопа', )