def tell_user_sign(self, alisa: Alisa): sign = Sign(alisa.get_intent_slot_value('SIGN', 'sign')) if sign: self.tell_horoscope_by_sign(alisa, sign) else: alisa.tts_with_text( "Не распознала знак зодиака, попробуйте еще раз") alisa.voice_button(self.on_intent('SIGN'), 'tell_user_sign')
def handle_dialog(self, alisa: Alisa): sign = alisa.get_user_state_object('sign') reset_sign = alisa.get_button_payload_value( 'reset_sign') or alisa.has_intent('ANOTHER_SIGN') if sign and not reset_sign: return self.tell_horoscope_by_sign(alisa, Sign(sign)) return super().handle_dialog(alisa)
def request_sign(self, alisa: Alisa): alisa.tts_with_text("Для какого знака зодиака рассказать гороскоп?") alisa.voice_button(self.on_intent('SIGN'), 'tell_user_sign') alisa.update_user_state('sign', None) for sign in random.sample(signs, 4): alisa.suggest(sign, 'tell_user_sign')
def save_user_sign(self, alisa: Alisa): sign = alisa.get_button_payload_value('sign') if not sign: sign = alisa.get_session_object('prev_sign') alisa.tts_with_text( "Запомнила. Теперь каждый раз при входе в навык я буду говорить ваш гороскоп. " "Гороскопы обновляются раз в сутки.") alisa.update_user_state('sign', sign) alisa.end_session()
def main(): logging.info('Request: %r', request.json) response = { "version": request.json['version'], "response": { "end_session": True } } dialog.handle_dialog(Alisa(request.json, response)) logging.info('Response: %r', response) return json.dumps(response, ensure_ascii=False, indent=2)
def handle_dialog_yacloud(request, context): logging.info('Request: %r', request) response = { "version": request['version'], "response": { "end_session": True } } dialog.handle_dialog(Alisa(request, response)) logging.info('Response: %r', response) return response
def greetings(self, alisa: Alisa): alisa.tts_with_text( "Приветствую тебя в нейрогороскопе. Гороскопы сгенерированы нейросетью на текстах Сорокина и Пелевина. \n" ) self.request_sign(alisa)
def tell_horoscope_by_sign(self, alisa: Alisa, sign: Sign): alisa.tts_with_text("Ваш гороскоп на сегодня: \n") alisa.tts("sil<[300]>") alisa.tts_with_text(self.get_horoscope(sign)) alisa.suggest(self.one_of(['Другой знак']), 'request_sign', payload={'reset_sign': True}) alisa.voice_button(self.on_intent('ANOTHER_SIGN'), 'request_sign') if not alisa.get_user_state_object('sign'): alisa.suggest(self.one_of(['Запомнить знак']), 'save_user_sign', payload={'sign': sign.value}) alisa.tts("sil<[300]>") alisa.tts("Хотите услышать про другой знак или запомнить ваш?") alisa.voice_button(self.on_intent('REMEMBER_SIGN'), 'save_user_sign') alisa.add_to_session_state('prev_sign', sign.value)