[PYTHON] Bot LINE sans serveur conçu avec IBM Cloud Functions

Le bot IBM Cloud x LINE à nouveau cette année

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.

Installation de l'interface de ligne de commande IBM Cloud

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.

Préparation de l'action

Préparation de l'environnement d'exécution

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

Préparation du code

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éer une action

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.

Génération d'URL Webhook

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.

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

Paramètres du bot LINE

Paramètres dans les développeurs LINE

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.

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

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.

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

Veuillez définir le message de réponse sur "désactivé" à partir de l'écran suivant lié à.

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

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.

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

Paramètres de l'interface de ligne de commande IBM Cloud

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

Contrôle de fonctionnement

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. IMG_7192.png

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

Bot LINE sans serveur conçu avec IBM Cloud Functions
J'ai créé un Bot LINE avec Serverless Framework!
J'ai fait un robot de remplacement de tampon avec une ligne
[AWS] J'ai créé un BOT de rappel avec LINE WORKS
J'ai créé un bot de livre de compte de ménage avec LINE Bot
J'ai essayé de faire LINE BOT avec Python et Heroku
[AWS] J'ai créé un BOT de rappel avec LINE WORKS (implémentation)
Je souhaite utiliser une bibliothèque externe avec IBM Cloud Functions
Essayez d'utiliser Python avec Google Cloud Functions
Déployez des fonctions avec Cloud Pak for Data
Surveillez les mises à jour des pages Web avec LINE BOT
API de reconnaissance faciale sans serveur conçue avec Python
Système d'aide à la décision pour les personnes âgées réalisé avec LINE Messaging API + Serverless Framework
J'ai fait mon chien "Monaka Bot" avec Line Bot
Créer un LINE BOT avec Minette pour Python
LINE BOT avec Python + AWS Lambda + API Gateway
Créer un bot LINE WORKS avec Amazon Lex
Made Mattermost Bot avec Python (+ Flask)
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
Faire un bot d'analyse morphologique de manière lâche avec LINE + Flask
Créer un robot LINE de retour de perroquet avec AWS Cloud9
[Super facile] Faisons un LINE BOT avec Python.
[LINE Messaging API] Créer un BOT de retour de perroquet avec Python
Création d'un BOT «Présentation non officielle du produit remis à neuf par Apple» avec l'API de messagerie LINE (v2) + API Gateway + lambda (python)