Viewing 19 reply threads
  • Author
    Posts
    • #8086
      lecagnois
      Participant

      TUTO DICTER UN MAIL et envoyer le mail

      Voici un petit bout de code pour envoyer un mail a vos amis préférés.
      Il faudra créer la liste de vos amis dans le code.

      Pour commencer nous allons ajouter les bibliothèques pour l’envoi de mail .

      Si vous utilisez le pack de Anthony et Gael
      il faudra modifier le fichier :
      …/InmoovScript/system/Import_Librairie.py

      Editer le fichier avec NotePAD++ et

      ajouter cela en fin du fichier

      ########## suplement pour mail 
      import smtplib
      from email import *
      from email.mime.multipart import *
      from email.mime.text import *
      from email import encoders
      from email.mime.base import *
      import imaplib
      import email
      import re

      Ensuite ajouter ce code dans votre fichier xxxxx.py
      que vous avez mis dans le répertoire :

      …/InmoovScript/inmoovCustom/

      def mailsend(amis):
      	try:
      		talkBlocking(amis)
      		# creation d un dictionnaire des amis
      		dico = {"toto":"toto@orange.fr","tata":"tata@orange.fr"}
      		# message si pas trouver
      		if (dico.get(amis) == None):
      			print("Amis inconnu dans l annuaire")
      			talkBlocking("personne inconnu au bataillon")
      		else:
      			print (dico.get(amis))
      			talkBlocking(" fais parti de tes amis ")
      			global ami 
      			ami = (dico.get(amis))
      			sleep(2)
      			chatBot.getResponse("SYSMAIL")
      			sleep(2)
      			
      	except IOError:
      		talk("le serveur est hors service , mail non transmis")
      	except OSError:
      		talkBlocking("oups il y a une erreur")
      	except ValueError:
      		talkBlocking("oups il y a une erreur ")
      	except:
      		print(sys.exc_info()[0])
      		raise
      
      def envoi(message):
      	try:
      		codage = 'UTF-8' # <= modif
      		fromaddr = "mail expediteur"
      		toaddr = ami
      		msg = MIMEMultipart()
      		msg['From'] = fromaddr
      		msg['To'] = toaddr
      		msg['Subject'] = "Message de InMOOV"
      		msg['Charset'] = codage  # <= modif
      		msg['Content-Type'] = 'text/plain; charset=UTF-8' # <--modif
      		body = message
      		if ami == "votre mail pour pouvoir les lire aprés":
      			typetexte = 'text/plain' # <= modif
      		else:
      			typetexte = 'plain'
      		msg.attach(MIMEText(body, typetexte, 'UTF-8')) # <= modif
      		#msg.attach(MIMEText(body, 'text/plain'))
      		
      		# valeur du serveur smtp securise ou pas
      		server = smtplib.SMTP('smtp.gmail.com', 587)
      		server.starttls()
      		server.login(fromaddr, "MOT DE PASSE")
      		text = msg.as_string()
      		server.sendmail(fromaddr, toaddr, text)
      		talkBlocking("mel transmis a " + ami)
      		server.quit()
      		server.close()
      	
      	except IOError:
      		talk("le serveur est hors service , mail non transmis")
      	except OSError:
      		talkBlocking("oups il y a une erreur")
      	except ValueError:
      		talkBlocking("oups il y a une erreur ")
      	except:
      		print(sys.exc_info()[0])
      		raise

      Pour finir voici le fichier AIML à mettre dans le répertoire
      …../InmoovScript/inmoovVocal/bots/fr/aiml/

      <?xml version="1.0" encoding="UTF-8"?>
      <aiml>
      <category>
            <pattern>ENVOYER UN MAIL À *</pattern>
            <template>
      		<think><set name="destinataire"><star/></set></think>
      			<oob>
      				<mrl>
      				   <service>python</service>
      				   <method>exec</method>
      				   <param>mailsend("<get name="destinataire"/>")</param>
      				 </mrl>
      			</oob>
      	</template>
          </category>	
      	<category><pattern>SYSMAIL</pattern>
      	<template>
      		<think><set name="message"><star/></set></think>Je t'écoute quel message court veux-tu envoyer  </template>
      	</category> 
      	
      	<category><pattern>*</pattern>
      		<that># quel message court veux-tu envoyer #</that>
      	<template>
      		<oob>
      		<mrl>
      		   <service>python</service>
      		   <method>exec</method>
      		   <param>envoi( "<star index="1"/>")</param>
      		 </mrl>
      		</oob>
      	</template>
      	</category>  	
      
      </aiml>
      • This topic was modified 7 years ago by lecagnois.
      • This topic was modified 7 years ago by lecagnois.
      Attachments:
      You must be logged in to view attached files.
    • #8091
      laurent
      Participant

      BONJOUR, Lecagnois merci pour ce jolie tuto, très détaillé, juste quelques petites questions :

      1- la liste d’amis, a rajouter dans le fichier Import_Librairie.py , a qu’elle endroit (a partir de qu’elle ligne je les rajoute) peut tu me donner également un exemple de comment Ecrire cette ligne stp

      merci

    • #8093
      lecagnois
      Participant

      hello
      dans le fichier import_librairie ce sont les bibliothèques a ajouter pas tes amis.
      En python ( comme dans beaucoup de langage) il faut ajouter des bibliothèques (ce sont souvent de programme écris en C) il servent a utiliser des fonctions dans ton programme.

      exemple :

      import smtp sers pour dialoguer avec le serveur smtp (send mail transfer ptotocol)
      etc ………

      Pour la liste des amis je suis resté simple (vu que j ai pas beaucoup d’amis mdr)
      on aurais pu utiliser une base de données.

      La j ai utilisé une sorte de tableaux de variable python .
      c’est la ligne dico = {“toto”:”toto@orange.fr”,”tata”:”tata@orange.fr”}
      ATTENTION SUR LE SITE INMOOV L AFFICHAGE EST MAUVAIS VOILA POURQUOI JE JOINT UN FICHIER DOC
      Il remplace les guillements par ca "

      Donc pour tes amis il suffit de remplace TOTO par un amis avec après son adresse mail
      en respectant toutes la syntaxe

    • #8094
      laurent
      Participant

      Ok je vais essayer, dernière question le fichier xxxxx.py qui n’existe pas dans mon répertoire …/InmoovScript/inmoovCustom/, je le crée ? je peux faire un copier d’un fichier.py, changer sont nom de xxx.py en mail.py par exemple et tous coller dedans ?

    • #8095
      lecagnois
      Participant

      le plus simple avec l’éditeur de texte nodepad++ tu créer un nouveau fichier que tu appel comme tu veux , moi j’en ai créer un seul ou je met tous mes programmes si tu veux je te le met en pieces jointe .

      Après tu l’enregistre au bon endroit

      Il faudra pas oublier de dire a MRL de le lancer pour ca
      Tu modifie le fichier Inmoov_custom.py

      # -- coding: utf-8 --
      # #############################################################################
      #                           YOUR INMOOV CUSTOM
      # Here you can add your own commands to play and test with inmoov
      # If you udpate the whole script, don't worry, those commands are safe
      # ##############################################################################
      
      #sample
      # play a neopixel animation while the robot speaking
      #PlayNeopixelAnimation("Flash Random", 255, 255, 255, 1)
      # talk something
      #talkBlocking("she's a replicant, isn't she?")
      # stop neopixel
      #StopNeopixelAnimation()
      execfile(RuningFolder+'inmoovCustom/ton_fichier_ici.py')
      

      c’est la nouvelle structure MRL de GAEL et Anthony
      que je trouve assez pratique et ordonné .

      Tu devrais lire les tutos python sur internet ou acheter un livre pour débuter en programmation , tu verra c’est passionnant , la seule limite c’est ton imagination.

      • This reply was modified 7 years ago by lecagnois.
    • #8097
      laurent
      Participant

      Merci beaucoup, je vais essayer, tu sait pour les livre sur les langage, cela va peux être te paraître hallucinant, je suis automaticien en industrie, et je programme des automates divers langage les doigt dans le nez, mais la en python j’y arrive pas, c’est fou, et crois moi j’y passe des heures, enfaîte, ce site est génial , le boulot de gael est génial , il y a beaucoup de gent génial ici, la seul chose que je trouve,un peu raide c’est qu’il est pas donner a tous le monde de passer des heure et des heures a chercher pourquoi ceci pourquoi cela, est sans poser aucun jugement , a mon sens il serait sympa qu’il y est un peu plus de réponse direct et clair a certaine question demander, souvent je li en réponse des chose qui parle au initié, ou des (piste) tu sait pour nous aussi c’est pénible de quémander pour essayer de comprendre, ont est conscient que vous avez du répéter cela des dizaine de fois, mais je reste persuader qu’il manque une partie pédagogique sur ce projet au niveau de la programmation et utilisation MRL , est servi pour les non initié, toute la partie impression, assemblage, est magnifiquement faite, tous est limpide, après quand ont a pas ces notion de python, et programmation ça devient vite flippant et démotivant , il serait d’ailleurs sympa de savoir si d’autre ont ce ressentie, sinon je doit absolument me remettre en question 😉

    • #8098
      laurent
      Participant

      Sorry, je la refait car je ne me relie pas et la les fautes c’est simplement pas possible 😉

      Merci beaucoup, je vais essayer, tu sais pour les livres sur les langages, cela va peut-être te paraître hallucinant, je suis automaticien en industrie, et je programme des automates, divers langage les doigts dans le nez, mais là en python j’y arrive pas, c’est fou, et crois- moi j’y passe des heures, enfaîte, ce site est génial, le boulot de gael est génial, il y a beaucoup de gent génial ici, la seule chose que je trouve, un peu raide, c’est qu’il n’est pas donné à tour de passer dès heure, et des heures à chercher pourquoi ceci pourquoi cela; Et sans poser aucun jugement, à mon sens il serait sympa qu’il y ait un peu plus de réponse directe et claire à certaines questions poser, souvent je lis en réponse des choses qui parlent aux initiés, ou des (piste) tu sais pour nous aussi c’est pénible de quémander pour essayer de comprendre, on est conscient que vous avez dû répéter cela des dizaines de fois, mais je reste persuadé qu’il manque une partie pédagogique sur ce proje,t au niveau de la programmation et utilisation MRL, est services de MRL? pour les non initiés, toute la partie impression, assemblage, est magnifiquement faite, tout est limpide; après quand ont à pas ces notions de python, et programmation ça devient vite flippant et démotivant, il serait d’ailleurs sympa de savoir si d’autres ont ce ressentie, sinon je dois absolument me remettre en question 😉

    • #8099
      lecagnois
      Participant

      Hello Laurent
      Tu sais moi je suis pas informaticien .
      Je suis autodidacte a chaque fois que je m’attaque a un langage j’achète un bouquin le plus simple possible et je progresse petit à petit .
      pour PYTHON j’ai acheté Apprendre à programmer avec PYTHON 3 avec 60 pages exercices et corrigé.
      de chez EYROLLES .
      Bon moi je suis à la retraite donc j’ai du temps, pour avancé il faut beaucoup de temps .
      Je suis en rien à l origine de MRL et je t avoue que je patauge autant que toi
      Souvent Anthony m’a aidé pour comprendre tout ça , qui reste assez compliqué c’est vrai.
      Faut dire que la source c’est du JAVA et la faut bien toucher sa bille .
      Ne te décourage pas tu va voir lorsque tu aura créer ton premier petit script PYTHON tu sera heureux comme tout . Commence par un truc trés simple .

      J’avais commencé les leçons dans se sens , mais ce n’est peut-etre pas assez pédagogique
      j’ai essayé de partagé ce que j’avais compris.

    • #8100
      laurent
      Participant

      ho je ne te jette pas la pierre, je pose juste ce qui me gratter la tète 😉 et oui le temps c’est le nerf de la guerre ! Lol c’est des coups, à finir seul ça tellement c’est prenant, et passionnant, et oui Anthony est formidable, moi aussi il m’a permis d’avancer énormément, un mec vraiment bien 😉 quant à la leçon, eh bien elles sont nécessaires, et merci de les avoir faite ça va aider beaucoup de monde je pense, moi personnellement j’ai bloqué à la 4, car je me sens plus, à l’aise à décortiquer le MRL, existant plutôt que des exercices, tu vois genre prendre le mrl de gael est Anthony, et expliquer à quoi sert chaque répertoire, et après expliquer comment marche chaque fichier, les fichiers qu’on ne modifie jamais, les fichiers qu’ont modifié pour ceci, pour cela, avec de petits tests à faire sur la version en service, enfin c’est mon avis, en tout cas merci pour cet échange 😉

    • #8102
      laurent
      Participant

      Alors j’ai essayer en respectant scrupuleusement la procédure, visiblement a la fin du démarrage de MRL il me met une erreur en rouge en bas de MRL le message dit voir fichier joint

      et une fois tous ce beau monde installer je lui dit quoi pour qu’il envoi un mail ?

      Attachments:
      You must be logged in to view attached files.
    • #8106
      lecagnois
      Participant

      Ben la tu a une erreur de syntax dans ton fichier

      Pour envoyer le mail , tu dis a ton robot “envoyer un mail a (le nom de ton ami)”
      après il vérifie si ton ami existe (dans le tableau dico) si il existe il retourne voir dans le fichier xml et il te dit Je t’écoute quel message court veux-tu envoyer

      Tu peux si tu veux changer les phares vu que c’est toi qui le programme

    • #8107
      lecagnois
      Participant

      Pour le message erreur tu clique dans le service python de mrl en bas sur l’onglet PYTHON tu aura l’erreur java en entier ou regarde dans la fenêtre dos tu vois aussi ou est l’erreur .
      exemple
      un guillement une virgule deux point manquant une mauvaise tabulation enfin tout peux faire chier le programmeur (lol)

    • #8108
      lecagnois
      Participant

      d’apres la photo tu a une erreur dans ton fichier Inmoov_custom.py

      voici a quoi ressemble le mien
      # — coding: utf-8 —
      # #############################################################################
      # YOUR INMOOV CUSTOM
      # Here you can add your own commands to play and test with inmoov
      # If you udpate the whole script, don’t worry, those commands are safe
      # ##############################################################################

      #sample
      # play a neopixel animation while the robot speaking
      #PlayNeopixelAnimation(“Flash Random”, 255, 255, 255, 1)
      # talk something
      #talkBlocking(“she’s a replicant, isn’t she?”)
      # stop neopixel
      #StopNeopixelAnimation()
      execfile(RuningFolder+’inmoovCustom/gestes.py’)

      la dernière ligne execute le programme gestes.py tu dois remplacer par le nom de ton script

      sinon envoie ton fichier

    • #8109
      laurent
      Participant

      alors après la modif que tu ma donner j’ai de nouveau une erreur, je t’envoi un imprime écran du mrl, et je joint mon fichier

      Attachments:
      You must be logged in to view attached files.
    • #8111
      laurent
      Participant

      # — coding: utf-8 —
      # #############################################################################
      # YOUR INMOOV CUSTOM
      # Here you can add your own commands to play and test with inmoov
      # If you udpate the whole script, don’t worry, those commands are safe
      # ##############################################################################

      #sample
      # play a neopixel animation while the robot speaking
      #PlayNeopixelAnimation(“Flash Random”, 255, 255, 255, 1)
      # talk something
      #talkBlocking(“she’s a replicant, isn’t she?”)
      # stop neopixel
      #StopNeopixelAnimation()

      execfile(RuningFolder+’inmoovCustom/Inmoov_custom.py’)

      <?xml version=”1.0″ encoding=”UTF-8″?>
      <aiml>
      <category>
      <pattern>ENVOYER UN MAIL À *</pattern>
      <template>
      <think><set name=”destinataire”><star/></set></think>
      <oob>
      <mrl>
      <service>python</service>
      <method>exec</method>
      <param>mailsend(“<get name=”destinataire”/>”)</param>
      </mrl>
      </oob>
      </template>
      </category>
      <category><pattern>SYSMAIL</pattern>
      <template>
      <think><set name=”message”><star/></set></think>Je t’écoute quel message court veux-tu envoyer </template>
      </category>

      <category><pattern>*</pattern>
      <that># quel message court veux-tu envoyer #</that>
      <template>
      <oob>
      <mrl>
      <service>python</service>
      <method>exec</method>
      <param>envoi( “<star index=”1″/>”)</param>
      </mrl>
      </oob>
      </template>
      </category>

      </aiml>

    • #8112
      laurent
      Participant

      visiblement ce serait dans udapdater/inmoovos-updater.py ligne 74 ou il y aurait un problème je te joint les fichier

      #inmoov os check if there is a new version ( stable or beta )
      def CheckVersion():
      global RobotneedUpdate
      global target
      global branch
      global RobotIsStarted

      branch=”master”
      if BetaVersion:branch=”develop”

      #download remote information
      urlretrieve(“https://raw.githubusercontent.com/MyRobotLab/inmoov/”+branch+”/InmoovScript/system/updater/updater.ini&#8221;, RuningFolder+’system/updater/updater.ini’)
      remoteVersion=””
      #read downloaded file
      BasicConfig = ConfigParser.ConfigParser(allow_no_value = True)
      BasicConfig.read(RuningFolder+’system/updater/updater.ini’)
      remoteVersion=BasicConfig.get(‘updater’, ‘version’)
      targetstable=BasicConfig.get(‘updater’, ‘targetstable’)
      targetbeta=BasicConfig.get(‘updater’, ‘targetbeta’)
      #read myrobotlab.jar url
      target=targetstable
      if BetaVersion:target=targetbeta

      if str(remoteVersion) == str(version) or str(remoteVersion)==”:
      return False
      else:
      print “need update”
      RobotneedUpdate=1
      RobotIsStarted=1
      return True

      talkDownloadPercent = Runtime.start(“talkDownloadPercent”,”Clock”)
      talkDownloadPercent.setInterval(5000)
      global percentDownload
      percentDownload=0

      def talkDownloadPercentFunc(timedata):
      chatBot.getResponse(str(percentDownload) + ” SYSTEM_PERCENT”)

      talkDownloadPercent.addListener(“pulse”, python.name, “talkDownloadPercentFunc”)

      def dlProgress(count, blockSize, totalSize):
      global percentDownload
      percentDownload=(int(count * blockSize * 100 / totalSize))

      def updateMe():

      global RobotneedUpdate
      if RobotneedUpdate:
      RobotneedUpdate=0
      print “start”
      PlayNeopixelAnimation(“Theater Chase”, 0, 0, 255, 5)
      r=ImageDisplay.displayFullScreen(RuningFolder+’system/pictures/update_1024-600.jpg’,1)
      sleep(2)
      talkDownloadPercent.startClock()
      urlretrieve(target, RuningFolder+’system/updater/myrobotlab-‘+branch+”.jar”,reporthook=dlProgress)
      sleep(2)
      talkDownloadPercent.stopClock()
      chatBot.getResponse(“SYSTEM_DOWNLOAD_OK”)
      StopNeopixelAnimation()
      sleep(3)
      runtime.exit()

      def dontUpdateMe():

      if RobotneedUpdate:
      global RobotneedUpdate
      RobotneedUpdate=0
      sleep(2)
      sleepModeWakeUp()

      #hard coded forced patch v 0.3.5

      def RemoveFile(file):
      try:
      os.remove(file)
      except:
      pass

      RemoveFile(RuningFolder+”inmoovGestures/COMPLETE_GESTURES/lookinmiddle.py”)
      RemoveFile(RuningFolder+”inmoovGestures/COMPLETE_GESTURES/lookleftside.py”)
      RemoveFile(RuningFolder+”inmoovGestures/COMPLETE_GESTURES/lookrightside.py”)
      RemoveFile(RuningFolder+”inmoovGestures/COMPLETE_GESTURES/googleMicAutostart.py”)
      RemoveFile(RuningFolder+”inmoovGestures/COMPLETE_GESTURES/trackPoint.py”)
      RemoveFile(RuningFolder+”inmoovGestures/COMPLETE_GESTURES/trackHumans.py”)

      #clean up .default.config
      for root, subdirs, files in os.walk(RuningFolder):
      for name in files:
      if name.split(“.”)[-1] == “default”:
      os.remove(os.path.join(root, name))
      if DEBUG==1:print “removed .default : “,os.path.join(root, name)

    • #8113
      lecagnois
      Participant

      J y comprends rien tu a mis le XML dans ton fichier Inmoov_custom.py ?

      cela peut pas marcher ?

      ce fichier est fait pour mettre ton script python
      le langage AIML soit etre placé dans le répertoire …../InmoovScript/inmoovVocal/bots/fr/aiml/
      prévu a cet effet .Tu peux créer autant de AIML que tu veux moi j’en ai créer un que j’ai appeler JPM.AIML ou je mets toutes les commandes pour pas modifier le travail de ANTHONY

      Dans mon exemple le fichier Inmoov_custom.py lance un autre script que j’ai appeler gestes.py
      execfile(RuningFolder+’inmoovCustom/gestes.py’)

      Le fichier inmoovos_updater.py fait parti de la derniere version de anthony pour mise a jour automatique . Je ne l’ai pas encore installer je travaille avec la version anterieur . mais cela ne change rien pour le moment.

      Contact moi par mail ce sera plus simple autrement on va remplir le forum (lol)

    • #8982
      cholet
      Participant

      Bonjour,

      Je tente d’envoyer un mail via le stmp.gmail.com, mais je reçois une erreur sur server.starttls() a l’init de myrobotlab.

      Voici la parti ou sa crash :

      server = smtplib.SMTP('smtp.gmail.com', 587)
      server.ehlo()
      server.starttls() #<= sa crash ici
      server.ehlo()
      server.login(fromaddr, "mon mot de passe")
      text = msg.as_string()
      server.sendmail(fromaddr, toaddr, text)
      talkBlocking("mel transmis a " + ami)
      server.quit()
      server.close()
    • #8990
      lecagnois
      Participant

      si tu utilse gmail
      il faut autorisé ton compte pour smtp non signé

    • #9010
      cholet
      Participant

      ok je te remercie je vais tester de cette manière.

Viewing 19 reply threads
  • You must be logged in to reply to this topic.