def standup_mode(self, req: Request): if 'end.report' in req.intents(): self.call_next(req.user_id()) elif req.command().startswith('запомни тему '): self.add_theme(req) elif self.end_standup_re.match(req.command()): self.end_standup(req.user_id()) elif req.command() == 'продолжить': self.response['text'] = ' ' # Игнорируем не команды self.response['tts'] = self.tts() elif 'skip.person' in req.intents(): self.response['text'] = 'Хорошо, пропускаю.\n' self.response['tts'] = 'хорошо , пропускаю .' self.call_next(req.user_id()) else: self.response['text'] = 'Не смогла распознать команду. Во время проведения стендапа могу ' \ 'распознать следующие команды: "у меня всё", "продолжить", ' \ '"его|её сегодня нет", "запомнить тему ТЕМА", "закончи стендап"'
def add_team_member_no_intent(self, req: Request): # command should be: Добавь в команду человека с именем ИМЯ и фамилией ФАМИЛИЯ split_lastname = req.command().split(' и фамилией ') names = {} if len(split_lastname) > 1: names['last_name'] = split_lastname[1] split_name = split_lastname[0].split(' с именем ') if len(split_name) != 2: self.response[ 'text'] = 'К сожалению я не смогла распознать имя, попробуйте ещё раз' return names['first_name'] = split_name[1] self.connection.add_team_member(req.user_id(), names) logging.info('Added %r to %r\'s storage', names, req.user_id()) self.response['text'] = f'Запомнила человека {names.get("last_name", "").capitalize()} ' \ f'{names["first_name"].capitalize()}'
def handle_dialog(self, req: Request): if not req.is_authorized( ): # Не умеем работать с неавторизованными пользователями self.response['text'] = 'Привет. К сожалению, я не могу работать с неавторизованными пользователями. ' \ 'Пожалуйста, зайдите в свой аккаунт и попробуйте снова' self.response['end_session'] = True return # Этот context manager закоммитит транзакцию и вернет соединение в пул with self.connection_factory.create_conn() as connection: self.connection = connection req.user = self.connection.get_user(req.user_id()) if not req.user: # Новый пользователь self.new_user(req.user_id()) return self.silence_enabled = req.user.silence_enabled if 'account_linking_complete_event' in req._req: self.response['text'] = 'Вы успешно авторизованны' return if req.is_session_new(): self.returning_greeting(req.user_id()) return if req.command() == 'покажи тикеты гитхаб': self.list_issues(req, 'github') return if req.command() == 'покажи тикеты трекер': self.list_issues(req, 'tracker') return if close_issue_command := self.close_issue_re.match(req.command()): self.close_issue(req, int(close_issue_command.group(2)), close_issue_command.group(3)) return if self.connection.check_standup(req.user_id( )): # user_id в текущий момент проводит стендап self.standup_mode(req) return if req.command().startswith('запомни гитхаб'): # Original utterance здесь, так как нам нужно именно то, # что передали self.register_github(req.user_id(), req.original_utterance()) return if req.command().startswith('запомни трекер'): self.register_tracker(req.user_id(), req.original_utterance()) return if req.command() == 'авторизуй трекер': if 'access_token' in req._req['session']['user']: self.response['text'] = 'Вы уже авторизованны' return else: raise AuthorizationRequest() if req.command() == 'помощь' or req.command() == 'что ты умеешь': self.response['text'] = self.help_message() return if req.command() == 'помощь продолжение': self.response['text'] = self.help_next() return if req.command() == 'помощь стендап': self.response['text'] = self.standup_help() return if req.command().startswith('добавь в команду человека с именем'): self.add_team_member_no_intent(req) return if req.command() == 'напомни команду': self.remind_team(req.user_id()) return if self.begin_standup_re.match(req.command()): self.start_standup(req.user_id()) return if req.command() == 'включи тишину': self.connection.modify_silence(req.user_id(), True) self.response['text'] = 'Тишина включена' return elif req.command() == 'выключи тишину': self.connection.modify_silence(req.user_id(), False) self.response['text'] = 'Тишина выключена' return if req.command() == 'удали команду': self.clean_team(req.user_id()) return intents = req.intents() if 'team.newmember' in intents: self.add_team_member( req.user_id(), intents['team.newmember']['slots']['name']['value']) return if 'team.delmember' in intents: self.del_team_member( req.user_id(), intents['team.delmember']['slots']['name']['value']) return self.response['text'] = 'Неизвестная команда.'
def add_theme(self, req: Request): theme = req.command()[13:] self.connection.set_theme_for_current_speaker(req.user_id(), theme) self.response['text'] = f'Запомнила тему "{theme}"' self.response['tts'] = f'запомнила тему {theme} . {self.tts()}'