[PYTHON] Serverloser LINE-Bot mit IBM Cloud-Funktionen

Auch in diesem Jahr wieder IBM Cloud x LINE Bot

Im Adventskalender des letzten Jahres wurde So erstellen Sie einen LINE-Bot mit Node-RED aus der IBM Cloud vorgestellt. Vielleicht liegt es am Adventskalender. Als ich kürzlich bei Google nach "Node-RED LINE bot" suchte, kam dieser Artikel an die Spitze. Es ist gut, einfach einen LINE-Bot mit Node-RED zu erstellen. Wenn Sie jedoch im Fall von Node-RED der IBM Cloud den Flow eine Weile nicht mit dem Light-Plan bearbeiten, wird die Anwendung gestoppt und der LINE-Bot funktioniert nicht. Es gab oft. Als ich über einen LINE-Bot nachdachte, der mit anderen Methoden mit einem Light-Plan erstellt werden kann, entwickelte ich eine Methode zum Erstellen eines Bots mithilfe von IBM Cloud-Funktionen, die ich kürzlich gelernt habe. Da ich LINE-Bots mit Serverless von anderen Cloud-Anbietern erstelle, dachte ich, dass es keinen Grund gibt, warum ich dies nicht mit IBM Cloud tun kann. Daher werde ich dieses Mal versuchen, Serverless LINE-Bots mit IBM Cloud-Funktionen zu erstellen.

Installieren der IBM Cloud CLI

Dieses Mal verwenden wir das LINE Bot SDK, um Aktionen in der Befehlszeile zu erstellen. Installieren Sie die Befehlszeilentools von hier aus (https://cloud.ibm.com/docs/cli?topic=cloud-cli-install-ibmcloud-cli&locale=ja). Starten Sie nach Abschluss der Installation das Terminal (Eingabeaufforderung für Windows) und melden Sie sich mit dem folgenden Befehl bei IBM Cloud an.

$ ibmcloud login

Wenn Sie sich anmelden können, ist die Installation abgeschlossen.

Vorbereitung der Aktion

Vorbereitung der Ausführungsumgebung

Das LINE Bot SDK befindet sich nicht in der Standardumgebung von IBM Cloud Functions. Daher müssen Sie die Umgebung mit Docker erstellen. Hier stellt die Umgebungskonstruktionsmethode vor. Dieses Mal wird das Docker-Hub-Repository unter dem folgenden Link veröffentlicht, daher werde ich es verwenden. Diese Umgebung ist nur ein LINE-Bot-SDK in der Python-Bibliothek, das standardmäßig in IBM Cloud-Funktionen enthalten ist. kmiura/linebot_function

Vorbereitung des Codes

Öffnen Sie den Editor und speichern Sie den folgenden Code. Hier haben wir die bekannte "Aum Return" für Bots erstellt, die auf die an den Bot gesendete Nachricht so wie sie ist antworten. Der Dateiname und der Aktionsname beim Speichern müssen übereinstimmen. Hier ist es "first-linebot.py".

first-linebot.py


# coding: utf-8
from linebot import LineBotApi
from linebot.exceptions import LineBotApiError
from linebot.models import TextSendMessage


def main(args):
    print(args)
    # account setting
    line_bot_api = LineBotApi(args['CHANNEL_ACCESS_TOKEN'])

    # make responce
    body = args["events"][0]
    try:
        if body["source"]["userId"] == "Udeadbeefdeadbeefdeadbeefdeadbeef":
            return {"status": 200}
        else:
            line_bot_api.reply_message(
                body["replyToken"],
                TextSendMessage(text=body["message"]["text"]))
    except LineBotApiError as e:
        print("Got exception from LINE Messaging API: %s\n" % e.message)
        for m in e.error.details:
            print("  %s: %s" % (m.property, m.message))
        return {"status": 403}

    return {"status": 200}

Eine Aktion erstellen

Jetzt erstellen wir eine Aktion. Installieren Sie zunächst das Plug-in IBM Cloud Functions.

$ ibmcloud plugin install cloud-functions

Richten Sie die Ressourcengruppe mit dem folgenden Befehl aus. Melden Sie sich für den Gruppennamen von hier an und überprüfen Sie.

$ ibmcloud target -o <org> -s <space> 

Erstellen Sie eine Aktion mit dem folgenden Befehl.

$ ibmcloud fn action create first-linebot --docker kmiura/linebot_function first-linebot.py 

Wenn das Ergebnis fehlerfrei zurückgegeben wird, ist es erfolgreich.

Generierung von Webhook-URLs

Nachdem wir die Aktion erstellt haben, ist es Zeit, die Webhook-URL zu generieren, die für den LINE-Bot festgelegt wird. Melden Sie sich über Ihren Browser bei IBM Cloud an und öffnen Sie den zuvor erstellten Aktionseinstellungsbildschirm über den IBM Cloud-Funktionsbildschirm (öffnen Sie ihn, indem Sie im Menü des Dashboard-Bildschirms Funktionen oder Funktionen auswählen). Klicken Sie auf die Registerkarte `Endpunkte``` und aktivieren Sie zum Speichern die Option` Als Webaktion aktivieren` ``. Dadurch wird eine URL generiert, mit der Sie die Webaktion aufrufen und kopieren können.

コメント 2019-10-26 194305.png

LINE Bot Einstellungen

Einstellungen in LINE-Entwicklern

Jetzt erstellen wir einen LINE-Bot. Melden Sie sich bei LINE Developers an, gehen Sie zu ** New Brobider → Kanal erstellen → Messaging-API **, gehen Sie zum Bildschirm für die Einstellung neuer Kanäle unten und geben Sie die erforderlichen Elemente ein. Bitte.

** * Alle Artikel außer optionalen Artikeln sind erforderlich. ** ** ** ** * Zeichenketten einschließlich LINE können nicht im App-Namen registriert werden. Geben Sie daher einen anderen Namen ein. ** ** **

Wenn die Erstellung abgeschlossen ist, werden Sie zum Kanaleinstellungsbildschirm weitergeleitet. Wählen Sie hier die Registerkarte "Mesaging-API-Einstellungen" und fügen Sie Freunde aus dem oben angezeigten QR-Code hinzu. Scrollen Sie und fügen Sie die soeben kopierte Funktions-URL in die Webhook-URL ein. Zu diesem Zeitpunkt `` `.json``` am Ende der URL Wenn Sie hinzufügen, wird der von Webhook empfangene Wert von json erfasst, sodass die Verarbeitung auf der Funktionsseite einfacher ist. Klicken Sie nach Abschluss der Eingabe auf die Schaltfläche "Aktualisieren", um die Registrierung abzuschließen. Klicken Sie auf die Schaltfläche Validieren, um festzustellen, ob die Funktion funktioniert. Der diesmal verwendete Funktionscode implementiert auch eine Antwort zum Überprüfen des Vorgangs. Wenn er ordnungsgemäß funktioniert, wird er als "Erfolg" angezeigt. Aktivieren Sie nach dem Update die Verwendung des unten angezeigten Webhooks.

コメント 2019-12-02 233240.png

Dies allein bewegt den Bot nicht. Wenn Sie weiter nach unten gehen, wird die folgende offizielle Kontofunktion von LINE angezeigt, aber die Antwortmeldung in dieser Funktion wird deaktiviert. Klicken Sie links neben dem Antwortnachrichtenelement auf Bearbeiten.

コメント 2019-12-02 233723.png

Bitte setzen Sie die Antwortnachricht auf dem folgenden mit verknüpften Bildschirm auf "deaktiviert".

コメント 2019-12-02 234022.png

Wenn Sie weiter scrollen, wird die Problemspalte für das Kanalzugriffstoken angezeigt. Klicken Sie auf "Problem", um das Zugriffstoken auszugeben und zu notieren.

スクリーンショット 2019-12-03 00.48.32.png

IBM Cloud CLI-Einstellungen

Starten Sie dann das Terminal (Eingabeaufforderung oder Power Shell für Fenster) erneut und registrieren Sie das zuvor von der CLI kopierte Zugriffstoken als Aktionsparameter. Registrieren Sie sich mit dem folgenden Befehl.

$ ibmcloud fn action update YOUR_ACTION --param CHANNEL_ACCESS_TOKEN YOUR_ACCESS_TOKEN

Funktionsprüfung

Öffnen Sie dann die LINE-App, öffnen Sie das Konto des zuvor erstellten Bots, und wenn die von Ihnen gesendete Nachricht vom Bot zurückgegeben wird, funktioniert sie normal. IMG_7192.png

Was haben Sie gedacht? Sie können einen LINE-Bot auch in einer serverlosen Umgebung der IBM Cloud problemlos erstellen. Mit IBM Cloud-Funktionen ist das Watson SDK integriert, sodass Sie problemlos Bots erstellen können, die mit Watson zusammenarbeiten. Wenn Sie über Docker-Kenntnisse verfügen, können Sie die Umgebung auch anpassen. Ich denke, es handelt sich um eine Architektur ohne Server mit einem hohen Freiheitsgrad.

Recommended Posts

Serverloser LINE-Bot mit IBM Cloud-Funktionen
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ich habe einen Stempelersatzbot mit Linie gemacht
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
Ich möchte eine externe Bibliothek mit IBM Cloud-Funktionen verwenden
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Stellen Sie Funktionen mit Cloud Pak for Data bereit
Überwachen Sie Webseitenaktualisierungen mit LINE BOT
Serverlose Gesichtserkennungs-API mit Python
Entscheidungsunterstützungssystem für ältere Menschen mit LINE Messaging API + Serverless Framework
Ich habe meinen Hund "Monaka Bot" mit Line Bot gemacht
Erstellen Sie mit Minette für Python einen LINE BOT
LINE BOT mit Python + AWS Lambda + API Gateway
Erstellen Sie mit Amazon Lex einen LINE WORKS-Bot
Mattermost Bot mit Python gemacht (+ Flask)
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Machen Sie mit LINE + Flask einen morphologischen Analyse-Bot
Lassen Sie einen Papagei LINE Bot mit AWS Cloud9 zurückgeben
[Super einfach] Machen wir einen LINE BOT mit Python.
[LINE Messaging API] Erstellen Sie einen Papageienrückgabe-BOT mit Python
"Inoffizielle Apple Refurbished Product Introduction" BOT mit LINE Messaging API (v2) + API Gateway + Lambda (Python)