Aller au contenu

Module Utilisateur - User

Vous êtes ici dans la documentation du module Utilisateur du robot.

Ce module permet de gérer les utilisateurs du robot. Il vous permet de créer, modifier, supprimer des utilisateurs du robot.

Warning

Avant d’utiliser un module, il faudra toujours le lancer sinon il vous sera impossible d’utiliser le module et les méthodes lier à celui-ci.

Note

Il faut lancer le module fenêtre et Caméra avant de lancer le module Utilisateur.
Et ouvrir la webapp pour pouvoir utiliser les méthodes liées à ce module.
Voir webapp pour plus d'informations.

Introduction

Tout au long de cette partie vous allez être ammenés à manipuler des seuils de détection. Un seuil de détection est une valeur comprise entre 0.00 et 1.00. Dans notre cas, le seuil sera utilisé pour comparer des images:

  • plus le score sera proche de 1.00 plus les images se ressemblent.
  • plus le score se rapproche de 0.00 plus les images sont différentes.

Les deux seuils à manipuler :

  • seuil_minimal: seules les cartes dépassant se seuil seront sélectionnées comme potentiellement bonnes.
  • seuil_arret_recherche: si une carte dépasse ce seuil, la recherche s'arrête : il s'agit de la bonne carte.

Note

Le code de détection de carte ne donnera jamais 1.00, car même s'il sagit de la même image, l'ordinateur va prendre en compte: la lumière, la position, l'inclinaison de la carte par rapport à la caméra...

Warning

Plus on prend un score d arrêt de recherche:
- bas: plus on a de chances de mal interpréter les cartes.
- haut: moins on detectera de carte.

Connexion/ Deconnexion

Connaitre le statut de connexion

Avant de connecter ou de déconnecter une personne, il est important de savoir si une personne est déjà connectée à l'application. Pour cela, on peut utiliser la méthode verifier_session() (fr) - check_session() (en).

Success

if robot.utilisateur.verifier_session():
    print("Une personne est connectée")
else:
    print("Personne n'est connectée")

ou alors

if robot.user.check_session():
    print("Une personne est connectée")
else:
    print("Personne n'est connectée")

Se connecter

Si on veut se connecter, on peut utiliser la méthode connecter(seuil_minimal : float, seuil_arret_recherche : float) (fr) - login(self, minimum_threshold: float, search_stop_threshold: float) : (en).

Connexion

robot.utilisateur.connecter(0.5, 0.7)

ou alors

robot.user.login(0.5, 0.7)

Note

Les seuils sont optionnels, si on ne les met pas, ils prendront les valeurs par défaut qui sont 0.75 et 0.85.

Warning

Si la fonction est appelée alors que l application web n' est pas lancée ou bien que la caméra n' est pas allumée alors la fonction ne marchera pas.

Se déconnecter

Pour se déconnecter, on peut utiliser la méthode deconnecter() (fr) - logout() (en).

Déconnexion

robot.utilisateur.deconnecter()

ou alors

robot.user.logout()

Créer/ Supprimer un compte utilisateur

Créer une session

Pour pouvoir se connecter, il faut avoir un compte utilisateur, pour avoir un compte utilisateur, il faut le créer. Pour créer un utilisateur il faut utiliser la méthode creer(prenom, nom, carte) (fr) - create(firstname, lastname, card) (en).

Création d'un utilisateur

robot.utilisateur.creer("Jean", "Dupont", carte)

ou alors

robot.user.create("Jean", "Dupont", card)

Note

La carte en paramètre de la méthode créer(prenom, nom, **carte**) doit être une image récupérée avec la méthode detecter_carte()(fr) -detect_card() (en).

Warning

La personne qui vient de créer son compte ne sera pas connecté, il faut appeler la méthode connecter() (fr) - login() (en) pour se connecter.

Supprimer une session

Pour supprimer un utilisateur, il faut faire appel à la méthode supprimer() (fr) - delete() (en).

Suppression d'un utilisateur

robot.utilisateur.supprimer()

ou alors

robot.user.delete()

Warning

Si la personne est connectée, elle sera déconnectée. Cette méthode supprime définitivement l'utilisateur connecté.

Methodes utiles liées aux cartes et sessions

Récupérer les informations de la personne connectée

Pour récupérer les informations de la personne connectée, on peut utiliser la méthode obtenir_utilisateur_connecte() (fr) - get_logged_in_user() (en).

Success

if robot.verifier_session():
        utilisateur_connecte = robot.utilisateur.obtenir_utilisateur_connecte()
        print("Le prenom de la personne connectée est: ", utilisateur_connecte.prenom)
        print("Le nom de la personne connectée est:", utilisateur_connecte.nom)

ou alors

if robot.user.check_session():
        logged_in_user = robot.user.get_logged_in_user()
        print("Le prenom de la personne connectée est: ", logged_in_user.firstname)
        print("Le nom de la personne connectée est: ", logged_in_user.lastname)

Ce code permet d' afficher dans le terminal le prenom et le nom de l' utilisateur. Voir User pour plus d'informations sur la structure de données utilisateur.

Récuperer la carte detectée à l'écran

Pour récupérer la carte détectée à l'écran, on peut utiliser la méthode detecter_carte(seuil_minimal : float, seuil_arret_recherche : float) (fr) - detect_card(minimum_threshold: float, search_stop_threshold: float) (en). Cette méthode retourne l'image detectée à l'écran.

Note

Les seuils sont optionnels, si on ne les met pas, ils prendront les valeurs par défaut qui sont 0.75 et 0.85.

Success

carte = robot.utilisateur.detecter_carte()

ou alors

card = robot.user.detect_card()

Warning

Cette fonction retourne l'image qui n appartient pas selon le programme à un utilisateur déjà connu.

Exemple Complet

from pybot import Robot, Couleur

robot = Robot()

robot.demarrer_webapp()

robot.initialiser_module_fenetre()

robot.fenetre.ouvrir_fenetre(1500, 1000)
robot.initialiser_module_camera()

robot.initialiser_module_utilisateur()

boutons = robot.attributs.boutons
boutons.quitter = robot.fenetre.creer_bouton(100, 50, 10, 80, Couleur.BLANC)
boutons.quitter.ajouter_texte("quitter", 10, 10, 20, Couleur.NOIR)

boutons.deconnecter = robot.fenetre.creer_bouton(200, 50, 10, 10, Couleur.BLANC)
boutons.deconnecter.ajouter_texte("deconnecter", 10, 10, 20, Couleur.NOIR)

robot.attributs.mettre_a_jour_affichage = False

while robot.est_actif():

    robot.verifier_evenements()
    boutons = robot.attributs.boutons
    boutons.quitter.afficher() 
    boutons.deconnecter.afficher()

    if boutons.quitter.est_actif():
        robot.desactiver()

    if robot.utilisateur.verifier_session() == False:
        robot.utilisateur.connecter()
        if robot.utilisateur.verifier_session():
            user = robot.utilisateur.obtenir_utilisateur_connecte()
            robot.fenetre.afficher_fond()
            robot.fenetre.afficher_texte("Bonjour " + user.prenom + " " + user.nom, 400, 600, 20, Couleur.BLANC)

    if boutons.deconnecter.est_actif():
        if robot.utilisateur.verifier_session():
            robot.utilisateur.deconnecter()
            robot.fenetre.afficher_fond()
            robot.fenetre.afficher_texte("Deconnexion reussie", 400, 600, 20, Couleur.BLANC)
        else:
            robot.fenetre.afficher_fond()
            robot.fenetre.afficher_texte("Personne n'est connectée", 400, 600, 20, Couleur.BLANC)

    robot.camera.afficher_camera(300, 10)
    robot.fenetre.actualiser_affichage()

Historique de conversation

Sauvegarder l'historique de conversation

Un fois que vous avez recuperer l'historique de conversation, grace à la méthode obtenir_historique_conversation() (fr) - get_current_conversation_history() (en) du module IA, vous pouvez la sauvegarder dans la base de données.

Pour cela, vous pouvez utiliser la méthode sauvegarder_historique_conversation(historique) (fr) - save_conversation_history(history) (en).

Sauvegarder l'historique de conversation

historique = robot.IA.obtenir_historique_conversation()
robot.utilisateur.sauvegarder_historique_conversation(historique)

ou alors

history = robot.AI.get_current_conversation_history()
robot.user.save_conversation_history(history)

Note

Un utilisateur doit être connecté pour pouvoir sauvegarder un historique de conversation.

Warning

L'ancien historique de conversation sera ecrasé par le nouveau.

Récupérer l'historique de conversation

Pour récupérer l'historique de conversation, vous pouvez utiliser la méthode obtenir_historique_conversation() (fr) - get_conversation_history() (en).

Récupérer l'historique de conversation

historique = robot.utilisateur.obtenir_historique_conversation()
robot.IA.charger_historique_conversation(historique)

ou alors

history = robot.user.get_conversation_history()
robot.AI.load_conversation_history(history)

Warning

Si un historique de conversation est déjà chargé et qu'un autre historique vient à être chargé l'ancien historique sera écrasé.