[GO] J'ai créé Chatbot en utilisant l'API LINE Messaging et Python

introduction

J'ai participé au stage d'été de Scied Co., Ltd. et j'ai développé LINE Chatbot. Depuis que la version officielle de l'API de messagerie a été annoncée par LINE le 29/09/2016, cette fois j'ai créé un bot qui répond automatiquement avec la version officielle.

[LINE] A annoncé de nouveaux développements pour le développement et la vulgarisation du chatbot, a publié une nouvelle API de messagerie et a officiellement commencé à la fournir aux développeurs. https://linecorp.com/ja/pr/news/ja/2016/1516

Postscript (18/10/2016)

Le code source du bot a été publié sur github. https://github.com/Sciseed/yukko-line-bot

Configuration du système

L'environnement de développement cette fois-ci est le suivant. ・ Python 3.4.0 ・ Heroku ・ Django 1.8.14

Comment faire

0. Construisez un serveur

Cette fois, j'ai utilisé Heroku et mis en place un serveur en utilisant Django. (J'expliquerai la construction du serveur plus tard)

1. Créez un compte professionnel LINE

Enregistrez un compte professionnel et créez un compte API de messagerie. https://business.line.me/ja/services/bot

2. Définissez les informations de compte et l'URL du webhook

Un jeton d'accès au canal sera émis lorsque vous créez un compte API. Veuillez en prendre note car il sera utilisé. L'URL du Webhook est un point de terminaison qui vous avertit lorsqu'un message est envoyé depuis LINE. Spécifiez l'URL créée par Heroku. (Étant donné que la communication SSL a été spécifiée au moment de l'essai, je me demande s'il y en a également cette fois) (Il semble que le numéro de port 443 ne soit pas nécessaire) webhookurl.jpg

3. Mettre en œuvre le traitement de l'API BOT

Créez une méthode en vous référant à LINE API Reference. Le code suivant renverra un message envoyé par l'utilisateur. (L'API utilisée dans la photo ci-dessous est en train de discuter en utilisant l'API de chat de docomo)

view.py


REPLY_ENDPOINT = 'https://api.line.me/v2/bot/message/reply'

def post_text(reply_token, text):
    header = {
        "Content-Type": "application/json",
        "Authorization": "Bearer {ENTER_ACCESS_TOKEN}"
    }
    payload = {
          "replyToken":reply_token,
          "messages":[
                {
                    "type":"text",
                    "text": text
                }
            ]
    }
    requests.post(REPLY_ENDPOINT, headers=header, data=json.dumps(payload))

4. Nouvelles fonctionnalités essayées ajoutées par l'API de messagerie

J'ai implémenté Carousel en utilisant la nouvelle fonction Template Message. Il y avait plus de restrictions que ce à quoi je m'attendais et c'était un peu difficile. Faites attention à la limite du nombre d'éléments et à la limite du nombre de caractères dans la description. De plus, selon la documentation, les miniatures doivent être envoyées via HTTPS (je ne sais pas si elles peuvent être envoyées via HTTP).

Sur l'écran de chat LINE, "Quel est le restaurant recommandé?" "Dis-moi un bon endroit pour déjeuner." Tel, "Restaurant" "Déjeuner" et "Recommandé" "Dites-moi" Si vous entrez une phrase qui comprend, etc., le carrousel s'affiche.

views.py



def post_carousel(reply_token):
    header = {
        "Content-Type": "application/json",
        "Authorization": "Bearer {ENTER_ACCESS_TOKEN}"
    }
    payload = {
          "replyToken":reply_token,
          "messages":[
              {
                "type": "template",
                "altText": "Restaurant recommandé",
                "template": {
                    "type": "carousel",
                    "columns": [

                        {
                          "thumbnailImageUrl": "https://s3-us-west-2.amazonaws.com/lineapitest/hamburger_240.jpeg ",
                          "title": "Burger indésirable",
                          "text": "Peu importe qui le dit, le roi de la malbouffe est toujours un hamburger.",
                          "actions": [

                              {
                                  "type": "uri",
                                  "label": "voir les détails",
                                  "uri": "http://example.com/page/222"
                              }
                          ]
                        },
                        {
                          "thumbnailImageUrl": "https://s3-us-west-2.amazonaws.com/lineapitest/pizza_240.jpeg ",
                          "title": "pizza cap",
                          "text": "Le goût authentique de Naples est rapide et bon marché. C'est une pizzeria spécialisée avec 17 magasins à Tokyo.",
                          "actions": [
                          
                              {
                                  "type": "uri",
                                  "label": "voir les détails",
                                  "uri": "http://example.com/page/222"
                              }
                          ]
                        },
                        {
                          "thumbnailImageUrl": "https://s3-us-west-2.amazonaws.com/lineapitest/bread_240.jpeg ",
                          "title": "Atelier de pain authentique Takeyoshi",
                          "text": "Selon vous, quel est le plus important pour le pain? Takeyoshi croit que cuire la surface est la vie.",
                          "actions": [
                          
                              {
                                  "type": "uri",
                                  "label": "voir les détails",
                                  "uri": "http://example.com/page/222"
                              }
                          ]
                        },
                        {
                          "thumbnailImageUrl": "https://s3-us-west-2.amazonaws.com/lineapitest/harumaki_240.jpeg ",
                          "title": "Vietnam Tokyo",
                          "text": "Un restaurant vietnamien établi de longue date à Higashi Ikebukuro. Nous proposons une cuisine vietnamienne appréciée des gens depuis plus de 40 ans.",
                          "actions": [
                          
                              {
                                  "type": "uri",
                                  "label": "voir les détails",
                                  "uri": "http://example.com/page/222"
                              }
                          ]
                        },
           
                    ]
                }
              }
            ]
    }
    req = requests.post(REPLY_ENDPOINT, headers=header, data=json.dumps(payload))

5. Achèvement

J'ai pu le faire assez rapidement. Par rapport à la version d'essai précédente, la documentation était plus facile à comprendre, elle était donc beaucoup plus facile à développer que prévu.

Veuillez ajouter des amis à LINE et essayez-le! ^ ^ 友だち追加数

Tips ・ Si "... je ne peux pas répondre individuellement avec ce compte ..." est renvoyé lors de l'envoi d'un message, la fonction de réponse automatique fonctionne, donc LINE @ MANAGER → Paramètres du compte → Paramètres du bot → Réponse automatique Si vous désactivez temporairement le message, il répondra. -Dans la version d'essai, il était nécessaire de spécifier le numéro de port 443, mais il semble que ce ne soit plus nécessaire. ・ Carousel ne fonctionnait pas sur iPhone au 30 septembre 2016.

-Cette fois, nous ne renvoyons que le perroquet, mais si vous renvoyez le texte passé à post_text avec l'API de chat de docomo, vous pouvez facilement créer un robot de chat. (Mis en œuvre dans le compte ci-dessus)

Résumé

Certaines fonctionnalités supplémentaires ont été ajoutées à partir de la version d'essai. Le développement du traitement du langage progresse également, et il semble que de plus en plus de chatbots multifonctionnels de haute qualité verront le jour. Cyseed, qui a participé en tant que stagiaire cette fois, utilise le traitement du langage naturel et l'apprentissage automatique pour fournir des conseils de haute qualité aux étudiants en recherche d'emploi "Job-hunt My Concier". Nous développons un service LINE. Il semble que des stagiaires ingénieurs soient également recrutés à tout moment.

Article suite

J'ai créé un chatbot en utilisant l'API LINE Messaging et Python (2)

référence

J'ai essayé de créer mon propre BOT pour lycéenne avec LINE BOT (Python & Heroku)Déplacer LINE BOT gratuitement avec HerokuRéférence API LINERésumé lors du déploiement de l'application Django sur HerokuJ'ai essayé de créer LINE BOT avec Python en utilisant l'API LINE BOT

Recommended Posts

J'ai créé Chatbot en utilisant l'API LINE Messaging et Python
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python (2) ~ Server ~
J'ai essayé de faire LINE BOT avec Python et Heroku
J'ai fait un Line-bot avec Python!
J'ai essayé de créer LINE-bot avec Python + Flask + ngrok + LINE Messaging API
Création du wrapper d'API Qiita Python "qiipy"
J'ai fait un texte Python
J'ai effectué un processus de connexion / déconnexion en utilisant Python's Bottle.
[API LINE Messaging] Créez un menu riche avec Python
J'ai créé un lecteur de flux rapide en utilisant feedparser en Python
J'ai fait une loterie avec Python.
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
[LINE Messaging API] Créez un BOT qui se connecte à quelqu'un avec Python
J'ai créé un chat-holdem de serveur de jeu de poker en utilisant websocket avec python
J'ai créé une bibliothèque de wrapper Python pour l'API de reconnaissance d'images docomo.
J'ai créé un chat chat bot avec Tensor2Tensor et cette fois cela a fonctionné
J'ai fait un programme de gestion de la paie en Python!
J'ai fait un compteur de caractères avec Python
Débutant: j'ai créé un lanceur à l'aide d'un dictionnaire
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai fait une carte hexadécimale avec Python
Après avoir étudié Python3, j'ai créé un Slackbot
J'ai fait un jeu rogue-like avec Python
J'ai fait un simple blackjack avec Python
J'ai créé un fichier de configuration avec Python
J'ai fait un simulateur de neurones avec Python
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
Je souhaite créer une application Web en utilisant React et Python flask
J'ai fait un robot de remplacement de tampon avec une ligne
J'ai créé un fichier de dictionnaire python pour Neocomplete
J'ai fait une prévision météo de type bot avec Python.
J'ai essayé le web scraping en utilisant python et sélénium
J'ai créé une application graphique avec Python + PyQt5
J'ai essayé la détection d'objets en utilisant Python et OpenCV
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
J'ai écrit une classe en Python3 et Java
[Python] J'ai créé un téléchargeur Youtube avec Tkinter.
J'ai créé un Bot LINE avec Serverless Framework!
J'ai essayé de lire un fichier CSV en utilisant Python
Essayez d'utiliser l'API ChatWork et l'API Qiita en Python
J'ai créé un programme cryptographique César en Python.
J'ai fait un jeu de cueillette avec Python
Made Mattermost Bot avec Python (+ Flask)
[LINE Messaging API] Je souhaite envoyer un message du programme à tout le monde LINE
J'ai créé un Line Bot qui utilise Python pour récupérer les e-mails non lus de Gmail!
[Pour les débutants] J'ai fait un capteur humain avec Raspberry Pi et notifié LINE!
J'ai créé un outil de bonus par les pairs en interne (agrégation uniquement) en utilisant Python et BigQuery
J'ai fait un script pour enregistrer la fenêtre active en utilisant win32gui de Python
〇✕ J'ai fait un jeu
[AWS] J'ai créé un BOT de rappel avec LINE WORKS
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
J'ai créé un bot de livre de compte de ménage avec LINE Bot
Essayez de créer un fichier compressé en utilisant Python et zlib
J'ai fait un jeu d'éclairage de sapin de Noël avec Python
J'ai créé une application de notification de nouvelles en ligne avec Python