Le calendrier de l'Avent de l'année dernière a présenté Comment créer un bot LINE à l'aide de Node-RED d'IBM Cloud. C'est peut-être à cause du calendrier de l'Avent. Récemment, lorsque j'ai cherché "Node-RED LINE bot" sur Google, cet article est arrivé en tête. Il est bon de créer facilement un bot LINE avec Node-RED, mais dans le cas de Node-RED d'IBM Cloud, si vous n'éditez pas le flux pendant un certain temps avec le plan d'éclairage, l'application s'arrêtera et le bot LINE ne fonctionnera pas. Il y en avait souvent. Ainsi, quand j'ai pensé à un bot LINE qui peut être créé avec un plan léger par d'autres méthodes, j'ai trouvé une méthode pour créer un bot à l'aide d'IBM Cloud Functions que j'ai récemment apprise. Puisque je crée des bots LINE avec des serveurs sans serveur d'autres fournisseurs de cloud, je pensais qu'il n'y avait aucune raison pour que je ne puisse pas le faire avec IBM Cloud, donc cette fois, j'essaierai de créer des bots LINE sans serveur à l'aide d'IBM Cloud Functions.
Cette fois, nous utiliserons le SDK du bot LINE, nous allons donc créer des actions sur la ligne de commande. Installez les outils de ligne de commande à partir d'ici (https://cloud.ibm.com/docs/cli?topic=cloud-cli-install-ibmcloud-cli&locale=ja). Une fois l'installation terminée, lancez le terminal (invite de commande pour Windows) et connectez-vous à IBM Cloud avec la commande suivante.
$ ibmcloud login
Si vous pouvez vous connecter, l'installation est terminée.
Le SDK du bot LINE ne se trouve pas dans l'environnement par défaut d'IBM Cloud Functions, vous devez donc créer l'environnement à l'aide de Docker. Ici présente la méthode de construction d'environnement. Cette fois, le référentiel du hub Docker est publié sur le lien ci-dessous, je vais donc l'utiliser. Cet environnement n'est qu'un SDK de bot LINE dans la bibliothèque Python qui est inclus par défaut dans IBM Cloud Functions. kmiura/linebot_function
Ouvrez l'éditeur et enregistrez le code suivant. Ici, nous avons créé le familier "Aum Return" pour les bots qui répondent au message envoyé au bot tel quel. Le nom du fichier et le nom de l'action lors de l'enregistrement doivent correspondre. Ici, il s'agit de "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}
Créons maintenant une action. Tout d'abord, installez le plug-in IBM Cloud Functions.
$ ibmcloud plugin install cloud-functions
Ciblez le groupe de ressources avec la commande suivante. Pour le nom du groupe, connectez-vous depuis ici et vérifiez.
$ ibmcloud target -o <org> -s <space>
Créez une action avec la commande suivante.
$ ibmcloud fn action create first-linebot --docker kmiura/linebot_function first-linebot.py
Si le résultat est renvoyé sans aucune erreur, il réussit.
Maintenant que nous avons créé l'action, il est temps de générer l'URL du webhook à définir pour le bot LINE. Connectez-vous à IBM Cloud à partir de votre navigateur et ouvrez l'écran des paramètres d'action que vous avez créé précédemment à partir de l'écran IBM Cloud Functions (ouvrez-le en sélectionnant Fonctions ou Fonction dans le menu de l'écran du tableau de bord). Cliquez sur l'onglet Endpoints
et cochez ```Enable as Web Action` `` pour enregistrer. Cela générera une URL qui vous permettra d'appeler l'action Web, alors copiez-la.
Maintenant, créons un bot LINE. Connectez-vous à LINE Developers, accédez à ** Nouveau Brobider → Créer un canal → API de messagerie **, accédez à l'écran de configuration du nouveau canal ci-dessous et saisissez les éléments requis. S'il vous plaît.
** * Tous les éléments sauf les éléments optionnels sont obligatoires. ** ** ** * Les chaînes de caractères incluant LINE ne peuvent pas être enregistrées dans le nom de l'application, alors entrez un autre nom. ** **
Une fois la création terminée, vous serez redirigé vers l'écran de réglage du canal. Sélectionnez l'onglet «Mesaging API Settings» et ajoutez des amis à partir du code QR affiché ci-dessus. Faites défiler et collez l'URL des fonctions que vous venez de copier dans l'URL du Webhook. À ce stade, `` .json``` à la fin de l'URL Si vous ajoutez, la valeur reçue par Webhook sera acquise par json, il sera donc plus facile à traiter du côté Fonctions. Après avoir terminé la saisie, cliquez sur le bouton «Mettre à jour» pour terminer l'enregistrement. Pour voir si la fonction fonctionne, cliquez sur le bouton Valider. Le code de fonction utilisé cette fois implémente également une réponse pour vérifier l'opération, donc s'il fonctionne correctement, il sera affiché comme "succès". Après la mise à jour, activons l'utilisation du Webhook qui apparaît ci-dessous.
Cela seul ne déplacera pas le bot. Si vous descendez plus bas, la fonction de compte officiel LINE suivante apparaîtra, mais le message de réponse sera désactivé. Cliquez sur Modifier à gauche de l'élément de message de réponse.
Veuillez définir le message de réponse sur "désactivé" à partir de l'écran suivant lié à.
Si vous faites défiler plus loin, la colonne de problème pour le jeton d'accès à la chaîne apparaîtra. Cliquez sur «Problème» pour émettre le jeton d'accès et en prendre note.
Ensuite, lancez à nouveau le terminal (invite de commande ou Power Shell pour la fenêtre) et enregistrez le jeton d'accès que vous avez copié précédemment à partir de la CLI en tant que paramètre d'action. Enregistrez-vous avec la commande suivante.
$ ibmcloud fn action update YOUR_ACTION --param CHANNEL_ACCESS_TOKEN YOUR_ACCESS_TOKEN
Ensuite, ouvrez l'application LINE, ouvrez le compte du bot que vous avez créé précédemment et lorsque le message que vous avez envoyé est renvoyé par le bot, il fonctionne normalement.
Qu'as-tu pensé? Vous pouvez facilement créer un bot LINE même dans un environnement sans serveur d'IBM Cloud. Et avec IBM Cloud Functions, le SDK Watson est intégré, il est donc facile de créer des bots qui fonctionnent avec Watson. De plus, si vous connaissez Docker, vous pouvez personnaliser l'environnement, donc je pense qu'il s'agit d'une architecture sans serveur avec un haut degré de liberté.
Recommended Posts