Como sabemos, los correos electrónicos son muy importantes para la comunicación, ya que cada comunicación profesional se puede realizar por correo electrónico y el mejor servicio para enviar y recibir correos es, como todos sabemos , GMAIL . Gmail es un servicio de correo electrónico gratuito desarrollado por Google. Los usuarios pueden acceder a Gmail en la web y usar programas de terceros que sincronizan el contenido del correo electrónico a través de los protocolos POP o IMAP.
Para conectar Gmail con Voice Assistant tenemos que usar la API de Gmail. En este artículo, veremos cómo enviar y revisar correos electrónicos dando comandos de voz. La API de Gmail le permite ver y administrar los datos del buzón de Gmail, como conversaciones, mensajes y etiquetas. Puede encontrar más información sobre la API de Gmail aquí: API de Gmail .
Requisitos:
- Python (3 o más)
- Una cuenta de Gmail
- Cliente API de Google
- módulo pyttsx3
- módulo de reconocimiento de voz
Instalación:
Instale las bibliotecas ejecutando los siguientes comandos:
pip instalar google-api-python-cliente google-auth-httplib2 google-auth-oauthlib
Ejecute esto o pyttsx3:
pip install pyttsx3
Ejecute esto para el reconocimiento de voz:
pip install SpeechRecognition
Ahora es necesario configurar una consola de Google Cloud para interactuar con la API de Gmail. Esto se puede hacer muy fácilmente. Puede encontrar información sobre cómo configurar una consola en la nube de Google.
Después de configurar la consola de Google Cloud, solo necesitamos hacer un enfoque para crear un asistente de voz para hablar de correos electrónicos.
Acercarse:
- Importe los módulos requeridos.
- Cree las siguientes funciones:
- hablar( ): Esta función ayudará a nuestro asistente a hablar.
- get_audio( ): esta función ayudará al asistente a obtener la entrada del usuario.
- check_mails( ): esta función se utiliza para comprobar los correos electrónicos no leídos en la sección principal de la bandeja de entrada.
- Llame a la función creada anteriormente.
A continuación se muestra la implementación en Python.
Python3
from __future__ import print_function import datetime import pickle import os.path from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request import os import pyttsx3 import speech_recognition as sr from datetime import date # If modifying these scopes, delete the file token.pickle . # if you run this for the firs # t time it will take you to gmail to choose your account SCOPES = ["https://www.googleapis.com/auth/gmail.readonly"] def speak(text): engine=pyttsx3.init() voices = engine.getProperty('voices') engine.setProperty('voice', voices[1].id) rate = engine.getProperty('rate') engine.setProperty('rate', rate-20) engine.say(text) engine.runAndWait() speak("Welcome to mail service") def get_audio(): r=sr.Recognizer() with sr.Microphone() as source: r.pause_threshold = 1 r.adjust_for_ambient_noise(source, duration=1) audio=r.listen(source) said="" try: said=r.recognize_google(audio) print(said) except: speak("Didn't get that") return said.lower() def authenticate_gmail(): """Shows basic usage of the Gmail API. Lists the user's Gmail labels. """ creds = None # The file token.pickle stores the user's # access and refresh tokens, and is # created automatically when the authorization # flow completes for the first # time. if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) # If there are no (valid) credentials available, # let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server(port = 0) # Save the credentials for the next run with open('token.pickle', 'wb') as token: pickle.dump(creds, token) service = build('gmail', 'v1', credentials=creds) return service def check_mails(service): # fetching emails of today's date today = (date.today()) today_main = today.strftime('%Y/%m/%d') # Call the Gmail API results = service.users().messages().list(userId = 'me', labelIds=["INBOX","UNREAD"], q="after:{0} and category:Primary".format(today_main)).execute() # The above code will get emails from primary # inbox which are unread messages = results.get('messages',[]) if not messages: # if no new emails print('No messages found.') speak('No messages found.') else: m="" # if email found speak("{} new emails found".format(len(messages))) speak("if you want to read any particular email just type read ") speak("and for not reading type leave ") for message in messages: msg=service.users().messages().get(userId='me', id = message['id'], format = 'metadata').execute() for add in msg['payload']['headers']: if add['name']=="From": # fetching sender's email name a=str(add['value'].split("<")[0]) print(a) speak("email from"+a) text=input() if text == "read": print(msg['snippet']) # speak up the mail speak(msg['snippet']) else: speak("email passed") SERVICE2=authenticate_gmail() check_mails(SERVICE2)
Producción:
Publicación traducida automáticamente
Artículo escrito por akshatchoudhary58 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA