[PYTHON] Ich habe versucht, das Telefon klingeln zu lassen, als es auf dem IoT-Post veröffentlicht wurde

Dieser Beitrag ist eine Fortsetzung von Dieser Artikel (Einführung in den IoT-Beitrag).

Versuchen Sie, das Telefon anzurufen, wenn es an den IoT Smart Post gesendet wird

Im vorherigen IoT-Beitrag habe ich eine E-Mail erhalten, als sie veröffentlicht wurde, aber hier habe ich versucht, die AWS-Funktion zu verwenden, um das Telefon klingeln zu lassen.

Wenn ein per Post versendeter Artikel über einen Teil des Telefon-Call-Center-Mechanismus namens "Amazon Connect" über das serverlose AWS "Lambda" erkannt wird, wird ein Anruf an die angegebene Telefonnummer gestartet und eine Benachrichtigung über den Eingang des Postversands gesendet. Kann jetzt gemacht werden.

Wie in der folgenden Abbildung gezeigt, erstellen wir eine Funktion, um eine Python-Funktion auf "Lambda" vom Amazon API Gateway von der Mikrocomputerplatine aus zu starten, eine Verbindung zu Amazon Connect herzustellen und die angegebene Telefonnummer anzurufen. .. Der Vorteil der Verwendung von Amazon Connect besteht darin, dass die synthetische Stimme beim Klingeln des Telefons die Zeichenfolge in Lambdas Python wie auf Japanisch lesen kann. Ich habe es diesmal nicht gesehen, aber wenn Sie beispielsweise den Inhalt der Parameter von ApiGateway dynamisch gestalten, können Sie den Zeitpunkt der Veröffentlichung per Spracheingabe ermitteln und das dynamische Vorlesen auf einfache Weise realisieren. ..

IoTポスト_FaaS経由電話で通知.png (60.6 kB)

Die erforderliche Zeit betrug etwa 2 bis 3 Stunden, während Screenshots aus dem Bundesstaat, in dem das Konto eingerichtet wurde, überprüft und aufgenommen wurden. Wenn Sie daran gewöhnt sind, dauert es weniger als 30 Minuten.

Amazon Connect-Einstellungen

Ich habe auf den folgenden Blog-Artikel verwiesen

Erstellen Sie einen Mechanismus, um mit Amazon Connect einen Anruf für 4 US-Dollar pro Monat zu tätigen https://dev.classmethod.jp/cloud/aws/amazon-connect-system-alert/#toc-amazon-conenct

Zuerst,

Erstellen Sie eine Amazon Connect-Instanz https://dev.classmethod.jp/cloud/aws/hello-connect-tokyo-region/#toc-amazon-connect

↑ Während Sie dies beobachten, führen Sie von der Instanz von Connect bis zum Einstellen und Testen.

88d67739-299f-43ec-8a30-1534c43c7152.png

746a170f-0104-4076-bda1-cade38615b4b.png

Wenn Sie die Option für eingehende Telefonie aktivieren und die Telefonnummer erhalten, verknüpfen Sie den Anfragefluss mit der Telefonnummer. Sie können dies testen, indem Sie die erhaltene Telefonnummer anrufen. Deaktivieren Sie nach dem Test den eingehenden Anruf in den Einstellungen der Telefonieoption.

Lambda-Einstellungen

Sie können über Python einen Anruf von Lambda aus tätigen. Hier habe ich eine Funktion mit dem Namen iotPost_AmazonConnect erstellt.

lambda_function.py


import boto3
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)

def lambda_handler(event, context):
    logger.info(event)
    logger.info(context)

    connect = boto3.client('connect', region_name='ap-northeast-1')
 
    message = 'Benachrichtigung von IoT Smart Post. Buchung wurde erkannt. Bitte nehmen Sie den Versand heraus und überprüfen Sie ihn. Danke für das benutzen.'
    logger.info(message)

    response = connect.start_outbound_voice_contact(
        DestinationPhoneNumber='+810000004717',
        ContactFlowId='edf8xxxx-xxxx-xxxx-xxxx-xxxxxxxx16f4',
        InstanceId='e82dxxxx-xxxx-xxxx-xxxx-xxxxxxxx6cf3',
        SourcePhoneNumber='+815000000000',
        Attributes={
            'message': message
        }
    )
    logger.info(response)

b14efede-1f92-4038-83ca-9146de809456.png

Stellen Sie auch die Rolle der Lambda-Funktion ein.

Hier haben wir dieser Funktion die volle Leistung von Amazon Connect (AmazonConnctFullAccess) gegeben. 0d9215b2-a22e-450f-9cf6-bf47cebd1db3.png

Ton oder Test 1

Wenn Sie hier die Testtaste drücken und mit einem entsprechenden JSON starten, klingelt das Telefon und die in lambda_function.py angegebene Zeichenfolge wird auf Japanisch vorgelesen.

電話呼び出しイメージ

API-Gateway-Konfiguration

Wie in der folgenden Abbildung im vorherigen Artikel gezeigt, handelt es sich normalerweise um ein Bild von einem als Benachrichtigungsziel von AWS SNS. 一般的な位置づけ

Dieses Mal werden wir die Lambda-Funktion vom API-Gateway aus aufrufen. Ich habe hier einen Screenshot mit dem POST-Methoden-Setup gemacht, aber ich habe ihn tatsächlich mit der GET-Methode eingerichtet. 56f3c482-1a9f-4949-b8b4-4a7d561378cb.png

Wenn Sie die Ressource überprüfen, sehen Sie einen Bildschirm wie den Screenshot.

Ton oder Test 2

Wenn Sie auf den Test klicken, klingelt das Telefon tatsächlich und Sie können die Ansage hören. 1a3bbdda-f8bb-44b8-bf51-c91a7b4ca749.png

Ton oder Test 3

↓ Nach Abschluss der API-Gateway-Einstellungen erhalten Sie eine URL wie diese. Wenn Sie also tatsächlich mit der GET-Methode darauf zugreifen, klingelt das Telefon und Sie werden benachrichtigt, dass es veröffentlicht wurde. https://????????????.execute-api.ap-northeast-1.amazonaws.com/public a6714a54-ee6e-44f8-b156-2df363e6f399.png

Ändern Sie die Benachrichtigungsziel-URL auf der Mikrocomputerplatine

Recommended Posts

Ich habe versucht, das Telefon klingeln zu lassen, als es auf dem IoT-Post veröffentlicht wurde
Als ich versuchte, das Root-Passwort mit ansible zu ändern, konnte ich nicht darauf zugreifen.
Als ich versuchte, eine VPC mit AWS CDK zu erstellen, konnte ich es aber nicht schaffen
Als ich in IPython versuchte, den Wert zu sehen, war es ein Generator, also kam ich auf ihn, als ich frustriert war.
Als ich versuchte, eine Socket-Kommunikation mit Raspberry Pi durchzuführen, war das Protokoll anders
Was ich getan habe, als ich wütend war, es mit der Option enable-shared einzufügen
Ich habe versucht, es einfach zu machen, die Einstellung des authentifizierten Proxys auf Jupyter zu ändern
Wenn ich versuche, Apache SSL zu erstellen, wird es nicht gestartet.
Ich habe versucht, zum Zeitpunkt der Bereitstellung mit Fabric und ChatWork Api automatisch in ChatWork zu posten
Als ich versuchte, PIL und matplotlib in einer virtuellen Umgebung zu installieren, war ich süchtig danach.
Als ich den AtCoder Beginner Contest ausprobierte, war es ein schreckliches Ergebnis, also schaue ich zurück
Ich habe versucht, eine Site zu erstellen, mit der die aktualisierten Informationen von Azure einfach angezeigt werden können
Die Platte, von der ich süchtig war, als ich MeCab in Heroku einsetzte
Ich habe versucht, das automatische Senden einer E-Mail durch Doppelklicken auf das Symbol [Python] zu ermöglichen
Ein Memorandum beim automatischen Erwerb mit Selen
Ich habe mir die Metainformationen von BigQuery angesehen und versucht, sie zu verwenden
Ich habe versucht, einen Sender auf der IoT-Plattform "Rimotte" zu registrieren.
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Die Geschichte, dass der Wachmann eingesperrt war, als das Labor auf IoT umgestellt wurde
Ich habe versucht, ein Skript zu erstellen, das die Tweets eines bestimmten Benutzers auf Twitter verfolgt und das veröffentlichte Bild sofort speichert
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
[Python] Als ich versuchte, ein Dekomprimierungswerkzeug mit einer Zip-Datei zu erstellen, die ich gerade kannte, war ich süchtig nach sys.exit ()
Ich habe versucht, ein System zu erstellen, um den Programmführer automatisch zu erfassen → ihn an einem Tag im Kalender zu registrieren
Ich habe versucht, das automatische Senden einer E-Mail durch Doppelklicken auf das Symbol [GAS / Python] zu ermöglichen
zoom Ich habe versucht, den Grad der Aufregung der Geschichte auf der Konferenz zu quantifizieren
Passende Karaoke-Tasten ~ Ich habe versucht, es auf Laravel zu setzen ~ <auf dem Weg>
[Zaif] Ich habe versucht, den Handel mit virtuellen Währungen mit Python zu vereinfachen
Ich überarbeitete "Ich habe versucht, Othello AI zu machen, als Programmieranfänger Python studierten"
Gorilla-Urteilsmaschine, Gorinator! !! Versucht es zu schaffen!
Ich versuchte das Weckwort zu erkennen
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren
Ich habe eine Web-API erstellt
Ich habe "Ich habe versucht, ein Skript zu erstellen, das gepostete Bilder sofort speichert, indem ich zu den Tweets eines bestimmten Benutzers auf Twitter zurückgekehrt bin" überarbeitet.
Der tree.plot_tree von scikit-learn war sehr einfach und bequem, daher habe ich versucht, zusammenzufassen, wie man es einfach benutzt.
Als ich untersuchte, ob die COTOHA-API Mansai verstehen konnte, war dies vernünftig.
Irgendwie hat der Code, den ich geschrieben habe, funktioniert und ich war beeindruckt, also werde ich ihn veröffentlichen
P100-PCIE-16GB wurde der GPU von Google Colab hinzugefügt, bevor ich es wusste
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Ich möchte gleichzeitig einen Musik-Player erstellen und Musik ablegen
Ich habe versucht, Resultoon auf Mac + AVT-C875 zu verwenden, war aber unterwegs frustriert.
Ich habe versucht, den Urknall-Satz zu verifizieren [Kommt er zurück?]
Ich habe versucht, die Daten des Laptops durch Booten unter Ubuntu zu retten
Ich habe die Größenänderung von TensorFlow nicht verstanden und sie daher visuell zusammengefasst.
Ich habe mein Bestes versucht, um eine Optimierungsfunktion zu erstellen, aber es hat nicht funktioniert.
django geodjango Ich habe mich darauf bezogen, als ich im Tutorial feststeckte (Bearbeitung)
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Ich habe versucht, beim Trocknen der Wäsche zu optimieren
[Einführung in json] Nein, ich war süchtig danach. .. .. ♬
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, OneHotEncoder zu erstellen, der häufig für die Datenanalyse verwendet wird, damit er den juckenden Ort erreicht.
Ich habe versucht, PyCaret mit der schnellsten Geschwindigkeit zu verwenden
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe versucht, KI für Smash Bra zu machen
Qiita Job Ich habe versucht, den Job zu analysieren
LeetCode Ich habe versucht, die einfachen zusammenzufassen