Normalerweise erhalte ich verschiedene Erinnerungsbenachrichtigungen per E-Mail oder Push-Benachrichtigung, aber ich neige dazu, diese zu übersehen. Daher dachte ich, es wäre schön, wenn Sie mich per Sprache über Google-Kalendererinnerungen informieren könnten.
Ich werde den allgemeinen Ablauf schreiben.
Es gibt viele Schritte, aber außer dem Schreiben des Lambda-Codes habe ich nur auf den Bildschirm geklickt.
Melden Sie sich zunächst unter Twilio an.
Wechseln Sie nach der Anmeldung und Anmeldung zum "Konsolen-Dashboard" und notieren Sie sich den Inhalt von "ACCOUNT SID" und "AUTH TOKEN". Dies wird später in der Lambda-Funktion verwendet.
Kaufen Sie dann die Telefonnummer, die Sie für den Anruf benötigen. Sie müssen den Kauf der Telefonnummer in Rechnung stellen, also berechnen Sie die Punkte im Voraus auf der Seite "Abrechnung".
Wechseln Sie nach dem Aufladen der Punkte von "Console Dashboard" zu "Buy a Number". Da wird der Bildschirm zur Suche nach Telefonnummern angezeigt
In den Suchergebnissen sollte eine Liste der verfügbaren Telefonnummern angezeigt werden. Kaufen Sie also die gewünschte Nummer.
Wenn Sie eine Telefonnummer kaufen, sollte die gekaufte Telefonnummer unter "Telefonnummer" und "Aktive Telefonnummer" angezeigt werden. Diese Nummer wird auch in der Lambda-Funktion verwendet. Denken Sie also daran.
___ * Wenn Sie ein Twilio-Konto haben, erhalten Sie eine Telefonnummer für eine kostenlose Testversion, sodass dies möglicherweise in Ordnung ist. Ich habe so schnell aufgeladen, dass ich nicht sicher bin, wie viel ich kostenlos anrufen kann. ___
Die Benachrichtigungseinstellungen von Google Kalender zu Google Mail sind einfach, daher schreibe ich sie nicht.
Google Mail setzt die Bedingung unter "Einstellungen" -> "Filter und blockierte Adressen" -> "Neuen Filter erstellen" auf "von: ([email protected])" und leitet sie an die folgende Adresse weiter. Es ist in Ordnung, wenn Sie die Übertragungszieladresse mit festlegen.
Für die AWS SES-Einstellungen sind die folgenden Artikel hilfreich.
AWS Lambda Als nächstes erstellen wir eine Lambda-Funktion.
Schreiben Sie zuerst den Code lokal.
$ mkdir voice_reminder
$ cd voice_reminder
$ vim lambda_function.py
lambda_function.py
# -*- coding: utf-8 -*-
import os
import re
import json
import email
import base64
import urllib
import boto3
from twilio.rest import Client
account_sid = os.environ['ACCOUNT_SID']
auth_token = os.environ['AUTH_TOKEN']
#Legen Sie die Konto-SID und das Authentifizierungstoken auf der Twilio-Kontoseite fest
client = Client(account_sid, auth_token)
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')
titleText = None
timeText = None
try:
#Extrahieren Sie die aus Google Mail übertragenen E-Mail-Daten
response = s3.get_object(Bucket=bucket, Key=key)
b = email.message_from_string(response['Body'].read())
titleRegex = re.compile("Titel: (.+)")
timeRegex = re.compile("Datum (und Uhrzeit: \d{4}/\d{2}/\d{2} \(.+\) (\d{2}\:\d{2}) ~ (\d{2}\:\d{2}) .+")
if b.is_multipart():
for payload in b.get_payload():
line = base64.b64decode(payload.get_payload())
#Extrahieren Sie den Titel sowie Datum und Uhrzeit des E-Mail-Textes
title = titleRegex.search(line)
if title is not None:
titleText = title.group(1)
time = timeRegex.search(line)
if time is not None:
timeText = time.group(1)
except Exception as e:
print(e)
raise e
if titleText is not None and timeText is not None:
twiml = "<Response><Pause length='3'/><Say voice='woman' language='ja-jp'>Dies ist eine Erinnerung. heute%Von s%Es gibt einen Zeitplan für s.</Say></Response>" % (timeText, titleText)
#Text erinnern(TwiML gemacht)Zu Twimlets Echo und rufen Sie die angegebene Telefonnummer an
call = client.api.account.calls\
.create(to=os.environ['REMIND_TO'],
from_=os.environ['REMIND_FROM'],
url="http://twimlets.com/echo?Twiml="+urllib.quote(twiml.encode("utf-8")))
print(call.sid)
Installieren Sie nach dem Schreiben des Codes das SDK namens twilio-python im selben Verzeichnis wie die Lambda-Funktion.
$ pip install twilio -t /path/to/voice_reminder
Erstellen Sie nach der Installation des SDK eine Zip-Datei.
$ zip -r voice_reminder.zip .
Erstellen Sie als Nächstes eine Lambda-Funktion.
"Erstellen einer Lambda-Funktion"
Wählen Sie "Leere Funktion"
Geben Sie unter "Triggereinstellungen" den S3-Bucket an, der beim Einstellen von SES erstellt wurde.
Wählen Sie den Trigger als S3
Wählen Sie den vorgefertigten S3 in "Bucket"
Setzen Sie "Event Type" auf "Put"
Legen Sie das Präfix fest (wenn das Objektschlüsselpräfix beim Festlegen von SES festgelegt wurde, machen Sie es gleich)
Überprüfen Sie die Gültigkeit des Triggers
Stellen Sie jeden Punkt unter "Funktionseinstellungen" ein.
Geben Sie den Namen der Funktion ein
Wählen Sie Python 2.7 für "Runtime"
Wählen Sie "ZIP-Datei hochladen" unter "Code-Eintragstyp" und wählen Sie die zuvor erstellte Zip-Datei aus.
Geben Sie die folgenden Elemente in die Umgebungsvariablen ein
Legen Sie die von Twilio erhaltene Konto-SID in "ACCOUNT_SID" fest.
Setzen Sie "AUTH_TOKEN" auf das von Twilio erhaltene Auth Token
Stellen Sie die Telefonnummer ein, an die Sie "REMIND_TO" erinnern möchten (+8190 ******** usw.)
Stellen Sie die bei Twilio gekaufte Telefonnummer in "REMIND_FROM" ein (+8150 ******** usw.)
Geben Sie gegebenenfalls "Rolle" und "Vorhandene Rolle" an. (Seit dem S3-Zugriff machen Sie es im Voraus mit IAM)
Stellen Sie "Timeout" unter "Detaillierte Einstellungen" auf ca. 30 Sekunden ein.
Erstellen Sie eine Funktion
Legen Sie danach einen Termin in Google Kalender fest und prüfen Sie, ob Twilio eine Spracherinnerung sendet.
Ich werde Google Kalender nicht besonders erläutern, aber Sie können den Benachrichtigungszeitpunkt festlegen, indem Sie "Benachrichtigung bearbeiten" -> "Terminbenachrichtigung" unter "Kalendereinstellungen" auswählen. Stellen Sie daher bitte Ihre Lieblingszeit ein.
Als ich Twilio dieses Mal zum ersten Mal berührte, hielt ich es für interessant, es mit einer Architektur ohne Server wie AWS Lambda (jetzt) zu kombinieren.
Recommended Posts