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.
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.
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
Ö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}
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.
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.
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.
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.
Bitte setzen Sie die Antwortnachricht auf dem folgenden mit verknüpften Bildschirm auf "deaktiviert".
Wenn Sie weiter scrollen, wird die Problemspalte für das Kanalzugriffstoken angezeigt. Klicken Sie auf "Problem", um das Zugriffstoken auszugeben und zu notieren.
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
Ö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.
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