def explication_obj(msg, obj): """ Permet à partir d'un message et d'un type objet de parcourir le fichier trouvé de notre bdd :return: """ sm.speech_and_move(u"redirecion sur explicator effectuée !") sm.speech_and_move(u"Quelles informations désires-tu sur {} {}".format( obj.get_data(obj.__class__.DETERMINANT), obj.get_data(obj.__class__.NOM))) list_obj = ["{}".format(key) for key in obj.data] sm.speech_and_move( u"Tu peux avoir des informations sur {}".format(list_obj)) # On ecoute la question question = nl.nao_listen() # On regarde si l'info demandé est dans notre bdd et on boucle tant que l'utilisateur n'a pas dit non while "non" not in question: trouve = False #On récupère chaque mot dans la phrase dite par l'utilisateur for mot in question.split(): if mot in list_obj: sm.speech_and_move(u"{} : {}".format(mot, obj.get_data(mot))) trouve = True #Si on ne trouve pas de reponse à la question, on renvoi sur wikipédia if not trouve: get_wikipedia_answer(question) sm.speech_and_move( u"Voudrais tu d'autres infos ? Non si tu veux quitter, " u"et un autre mot clé si tu veux continuer.") question = nl.nao_listen()
def _interact(self): self.failed_interact = False self.raw_answer = nao_listen().lower() if typemsg(self.raw_answer): self.answer = list() self.failed_interact = True return # On fait dire à Nao les différents mots-clefs if nkr.sentence_keywords(self.raw_answer, ["aide", "ed"]): if hasattr(self, "help_kw"): sm.speech_and_move(self.help_kw) else: sm.speech_and_move( "Les mots clefs disponibles sont. {}".format(". ".join( [self.kw2id[i] for i in self.kw2id]))) self.completed = False self.answer = list() # On extrait la réponse selon keywords puis kw2id self.answer = nkr.sentence_keywords(self.raw_answer, self.keywords) if len(self.answer) == 1: if self.answer[0] in self.kw2id: self.kw_answer = self.kw2id[self.answer[0]] else: self.kw_answer = self.answer[0] # On échoue si on repère plus d'un mot-clef elif len(self.answer) > 1: sm.speech_and_move("Vous avez dit plus d'un mot-clef !") self.answer = [] self.completed = False
def next_scn(self): """ Modifie le scénario actuel en trouvant le scénario suivant. :return: False si il n'y a pas de scénario suivant, True sinon. """ todo = [ s for s in self.player.current_scenario.next_scenario if not s.completed ] if not todo: return False if len(todo) == 1: self.player.set_current_scenario(todo[0]) return True sm.speech_and_move( u"Il y a plusieurs scénarios disponibles. Lequel veux-tu executer?" ) kws = [ "premier", "2e" if not Setting.NAO_CONNECTED else "deuxième", "troisième", "quatrième", "cinquième", "sixième" ] sm.speech_and_move(u"".join([ u"Le {} s'intitule {}.".format(kws[i], todo[i].name) for i in range(len(todo)) ])) msg = nl.nao_listen().lower() rep = nkr.sentence_keywords(msg, kws) if not rep: print("Non reconnu !") return False self.player.set_current_scenario( Scenario( self.player.current_scenario.next_scenario[kws.index(rep)])) return True
def _interact(self): self.failed_interact = False self.raw_answer = nao_listen().lower() if typemsg(self.raw_answer): self.answer = "" self.failed_interact = True else: self.answer = self.raw_answer # nkr.sentence_keywords(self.raw_answer, self.keywords)
def _interact(self): self.failed_interact = False self.raw_answer = nao_listen().lower() if typemsg(self.raw_answer): self.failed_interact = True else: self.answer = nkr.sentence_keywords( self.raw_answer, ["oui", "ouais", "affirmatif", "non", "nom", u"négatif"])
def nao_key_word_recognition(*key_word): """ Fonction qui renvoie le mots entendus :param key_word: Liste des mots-clefs attendus :return: Le mot clef entendu par l'utilisateur """ msg = nao_listen().lower() for key in key_word: if key in msg: return key # si on n'a rien trouvé return ""
def launch(self, player=None): """ Démarre le Scénario :param player: Le joueur démarrant le Scénario :return: True si l'exécution termine le scénario (completed=True), False sinon """ if player: player.current_scenario = self self._pres() if self.starting_quest is None: print("Error! Scenario {} has no starting quest!".format(self.inner_name)) return True todo = self.starting_quest.choose_quest() if todo: if len(todo) == 1: todo[0].caller = self todo[0].launch(player) else: sm.speech_and_move(u"Il y a plusieurs quêtes disponibles. Laquelle veux-tu executer?") kws = ["première", "2e" if not Setting.NAO_CONNECTED else "deuxième", "troisième", "quatrième", "cinquième", "sixième"] sm.speech_and_move(u"".join([u"La {} s'intitule {}.".format(kws[i], todo[i].name) for i in range(len(todo))])) msg = codecs.encode(nl.nao_listen().lower(), "utf-8") rep = nkr.sentence_keywords(msg, kws) if not rep: print("Non reconnu !") return False todo[kws.index(rep[0])].caller = self todo[kws.index(rep[0])].launch(player) todo = self.starting_quest.choose_quest() if not todo: self.completed = True # give xp if player: player.give_xp(self.xp) return True else: return False
def get_name(): """ Fonction qui obtient le nom de la personne. :return: Elle renvoie un couple (booleen, string) True et le nom si tout s'est bien passé False et un code d'erreur sinon """ keyout = "non" name = "" while keyout != "" and Setting.naoMemoryProxy.getData( "MiddleTactilTouched") != 1: try: name = Nl.nao_listen().decode("utf-8") # gestion des cas spéciaux if name == "": if Setting.DEBUG: print "erreur sur NaoListen" return False, "erreur" elif "annuler" in name: if Setting.DEBUG: print "annulation" return False, "annulation" elif "tu me connais" in name: if Setting.DEBUG: print "re learning" return False, "re learning" Sm.speech_and_move( u"Le prénoms que tu ma dit est {} ".format(name)) demande = Dg.Creer(Dg.Demande, Dg.DicoVide, 23) Sm.speech_and_move(u'{}'.format(demande.out())) # Si on a mal enregistré on le fait répéter keyout = Nkr.nao_key_word_recognition("non", "tu l'a mal dit") if keyout != "": Sm.speech_and_move(u"Désoler, peut tu me redire t-on prénom ?") except Exception as e: print e raise e return True, name
#!/usr/bin/env python # -*- coding: utf-8 -*- """ GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Script a utiliser quand on allume Nao la première fois """ try: from NaoCreator.setting import * Setting(nao_connected=True, debug=True, ip="169.254.88.3") import NaoCreator.SpeechToText.nao_listen as Nl import NaoCreator.Tool.speech_move as Sm import NaoCreator.Tool.stop as Stp except Exception as e: print e if __name__ == '__main__': Sm.speech_and_move(u"Démarrage du script !") try: Sm.speech_and_move(u"{}".format(Nl.nao_listen())) except Exception as e: print "Error start: ", e Stp.emergency_stop()
def test_naolisten(): Setting.naoSpeech.say("Test d'une reponse courte !") Setting.naoSpeech.say("Test de se que tu ma dit {}".format( Nl.nao_listen()))
#!/usr/bin/env python # -*- coding: utf-8 -*- from NaoCreator.setting import Setting Setting(nao_connected=True, debug=True, nao_quest_v="2.1", bypass_wait_for=False, load_cpt_data=False, ip="169.254.88.3") from NaoCreator.Tool.speech_move import speech_and_move from NaoCreator.SpeechToText.nao_listen import nao_listen from NaoCreator.Tool.facebookor import send_the_post from NaoCreator.Tool.wikipediator import get_resum, FRENCH from NaoCreator.Tool.mailor import nao_send_mail speech_and_move(u"Dit moi le sujet de ton mail ") sujet = nao_listen() speech_and_move(u"Dit moi le texte de ton mail ") text = nao_listen() nao_send_mail(u"*****@*****.**", sujet, text) speech_and_move(u"Votre mail a bien été envoyé !") if __name__ == '__main__': pass