[PYTHON] So senden Sie eine Nachricht mit Curl an LINE

Mokuji

Auslösen

Ich habe beschlossen, eine App zu erstellen, die automatisch Nachrichten mit LINE sendet, und habe mich daher für die Verwendung der LINE-API entschieden. Ich fing an zu arbeiten und dachte, ich könnte eine Nachricht mit Locken senden. Infolgedessen konnte ich mit LINE_API + AWS (APIGateway + Lambda) eine Nachricht mit Curl senden. Ich wollte das damalige Know-how notieren und habe die vorhandenen Informationen persönlich nicht gefunden, also habe ich sie veröffentlicht.

Erstellen Sie ein LINE-Konto

Erstellen Sie zunächst normal ein LINE-Konto. LINE kann ein Konto erstellen, ohne "ID" und "Passwort" im System zu registrieren. Bitte registrieren Sie "ID" und "Passwort", um ein LINE-Konto zu erstellen. Wenn Sie es bereits erstellt haben, ist diese Arbeit nicht erforderlich.

BOT-Erstellung und Funktionsprüfung

Erstellen Sie als Nächstes einen BOT. Erstellen Sie schließlich ein Konto für die Entwicklung. Wenn Sie sich die offizielle Website ansehen, sehen Sie Begriffe wie BOT, Anbieter und Kanal. Diejenigen, die die Details verstehen, können sie klar unterscheiden, aber ich konnte sie nur irgendwie verstehen, wahrscheinlich wegen meines Unverständnisses. Zusammenfassend kann man sich zunächst alles als ≒ (fast gleich) vorstellen.

https://developers.line.biz/ja/docs/messaging-api/overview/

Fügen Sie dann den Anbieter zur Anbieterliste hinzu. Sie können verstehen, dass Sie ein neues LINE-Konto für das automatische Senden und Antworten erstellen.

https://developers.line.biz/console/channel/1653419974/basic/

20191103_1.jpg

20191103_2.jpg

Stellen Sie nach der Erstellung sicher, dass Sie mit Ihrem Entwicklungskonto chatten können. Am unteren Bildschirmrand befindet sich ein QR-Code. Laden Sie uns daher ein, mit Ihrem eigenen Konto zu sprechen, das Sie zuerst erstellt haben.

Ziel-ID abrufen

Nachdem Sie den Betrieb von BOT bestätigt haben, legen Sie die URL des Webhook-Ereignisses fest, um eine Nachricht an den vorhandenen Chatroom zu senden. Der Grund, warum diese Arbeit erforderlich ist, besteht darin, dass beim Senden einer Nachricht die Benutzer-ID und die Raum-ID des Ziels erforderlich sind. Es wurde gesagt, dass diese nicht durch normale LINE-Benutzeroperationen erhalten werden können und nicht einfach mit der LINE-App erhalten werden können.

20191103_3.jpg

Ändern Sie den Teil des roten Rahmens oben.

Was ist ein Webhook-Event? Es ist eine Funktion, die beim Empfang einer Nachricht eine feste Nachricht an die festgelegte URL sendet.

Hier kommt AWS API Gateway + Lambda ins Spiel. Legen Sie die API-Gateway-URL in der Webhook-URL fest.

Das folgende Beispiel sollte so verfügbar sein, wie es für die Lambdaquelle ist. Es ist Python.

lambda_function.py

import json
import traceback

# ==================================================
#Erste Funktion von Lambda aufgerufen
# ==================================================
def lambda_handler(event, context):
    try:
        #Protokollausgabe des Anforderungsinhalts
        log(event, 'receive request.')
        createResponse()
        
    except:
        #Wenn ein unerwarteter Fehler auftritt
        logger.log(traceback.format_exc())
        traceback.print_exc()
        
        return createResponse()

# ==================================================
#Generieren Sie eine Antwort
# ==================================================
def createResponse():
    return {
            'isBase64Encoded': False,
            'statusCode': 200,
            'headers': {},
            'body': {}
        }

# ==================================================
#Protokollausgabe
# ==================================================
def log(event, msg):
    print('EVENT >> ' + str(event))
    print('LOG >> ' + str(msg))

Die API-Gateway-Einstellungen sehen folgendermaßen aus

20191103_5.jpg

Das Protokoll wird an Cloudwatch ausgegeben. Hier sollten UserId und roomId ausgegeben werden. Sie können diese als Ziele angeben.

20191103_6.jpg

Bilddiagramm zum Verständnis

Verschiedene Dinge sind herausgekommen. Ich habe versucht, es leicht verständlich zu machen. Genau genommen gibt es viele verschiedene Punkte, aber ich denke, es ist leicht zu verstehen, wenn ich so denke, basierend auf meinem eigenen Urteilsvermögen und meinen Vorurteilen.

20191103_4.jpg

① http-Nachricht wird vom Mobiltelefon gesendet (= Nachricht wird von LINE gesendet) ② Der Server sendet die empfangene Nachricht an das Mobiltelefon / den BOT im Raum. ③ Die POST-Nachricht wird an die URL gesendet, die als Ziel-URL des Webhooks in BOT registriert ist.

Senden Sie eine Nachricht mit Curl

Zum Schluss werde ich eine Nachricht mit Curl senden. Das Senden einer Nachricht mit LINE wird als Push bezeichnet. Da die API für die Öffentlichkeit zugänglich ist, senden Sie sie entsprechend. https://developers.line.biz/ja/reference/messaging-api/#send-push-message

Übrigens habe ich eine Chrome-Erweiterung namens ASR verwendet. Ich denke, alles, was eine http-Nachricht senden kann, ist in Ordnung.

Methode POST URL https://api.line.me/v2/bot/message/push Content-Type application/json Autorisierungsträger Ausgestelltes Autorisierungstoken

{
  "to":ID erhalten,
  "messages":[
        {
            "type":"text",
            "text":"Sie können es automatisch so senden."
        }
    ]
}

Recommended Posts

So senden Sie eine Nachricht mit Curl an LINE
So installieren Sie NPI + Senden Sie eine Nachricht an Python
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Ich möchte eine Nachricht von Python an LINE Bot senden
So fügen Sie ein Paket mit PyCharm hinzu
So senden Sie eine Anfrage mit Python an die DMM (FANZA) -API
Senden Sie eine Nachricht von Slack an einen Python-Server
Lesen einer CSV-Datei mit Python 2/3
So zeichnen Sie ein 2-Achsen-Diagramm mit Pyplot
So entwickeln Sie eine Cart-App mit Django
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
Wie zeichnet man eine vertikale Linie auf einer Heatmap, die mit Python Seaborn gezeichnet wurde?
So erstellen Sie ein 1-zeiliges Kivy-Eingabefeld
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
[LINE Messaging API] Ich möchte eine Nachricht vom Programm an alle LINE senden
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
So erhalten Sie einen angemeldeten Benutzer mit Djangos forms.py
So konvertieren Sie ein Klassenobjekt mit SQLAlchemy in ein Wörterbuch
So führen Sie mit OpenCV ein Null-Padding in einer Zeile durch
Wie man ein Schießspiel mit toio macht (Teil 1)
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
So rufen Sie eine Funktion auf
Senden Sie ein Signal an den Unterprozess
Wie aktualisiere ich mit SQLAlchemy?
Wie man mit Theano besetzt
Wie man ein Terminal hackt
Wie mit SQLAlchemy ändern?
So trennen Sie Zeichenfolgen mit ','
Wie man RDP auf Fedora31 macht
Wie lösche ich mit SQLAlchemy?
Senden Sie eine Push-Nachricht an LINE Bot, wenn die LTE-M-Taste gedrückt wird [SORACOM]
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
So erstellen Sie mit Flask einen BOT für Cisco Webex-Teams
So setzen Sie einen Hyperlink zu "file: // hogehoge" mit sphinx-> pdf
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
So geben Sie ein Dokument im PDF-Format mit Sphinx aus
So erstellen Sie mit snappyHexMesh ein Flussnetz um einen Zylinder
So drucken Sie Zeichen als Tabelle mit der Druckfunktion von Python
Wie man ein einfaches Flappy Bird-Spiel mit Pygame macht
Senden Sie eine Nachricht an Google Hangouts Chat mit einem Thread (Python)
So zeigen Sie eine Liste der mit pyenv installierbaren Versionen an
So extrahieren Sie mit Numpy einen anderen als einen bestimmten Index
Eine Geschichte über den Umgang mit dem CORS-Problem
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
Erstellen Sie eine Nachricht, die der Lokalisierung entspricht, mit einer Python-Übersetzungszeichenfolge
So brechen Sie RT mit tweepy ab
Wie erstelle ich eine japanisch-englische Übersetzung?
Python: So verwenden Sie Async mit
So setzen Sie einen symbolischen Link
So verwenden Sie virtualenv mit PowerShell
So installieren Sie Python-Pip mit Ubuntu20.04LTS
Wie man einen lockeren Bot macht
So erstellen Sie ein Conda-Paket