Exemple #1
0
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
Exemple #3
0
    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)
Exemple #5
0
 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 ""
Exemple #7
0
    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
Exemple #8
0
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()
Exemple #10
0
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()))
Exemple #11
0
#!/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