J'ai essayé de faire mon propre BOT lycéenne avec le style Rinna avec LINE BOT (Python & Heroku)

Il semble que la liste blanche des adresses IP du serveur de LINE BOT soit devenue facultative, j'ai donc supprimé la partie du paramètre Fixie Addon d'Heroku et le paramètre de la liste blanche d'adresses IP du serveur de la procédure de l'article. Cela devrait fonctionner même si vous définissez la liste blanche IP Fixie + Server séparément.

[[Bonne nouvelle] La liste blanche des adresses IP des serveurs de LINE BOT est désormais facultative-Memorandum of Niwaka Server Shop](http://architect.hatenadiary.jp/entry/2016/05/18/%E3%80%90 % E6% 9C% 97% E5% A0% B1% E3% 80% 91LINE_BOT_% E3% 81% AE_Server_IP_Whitelist_% E3% 81% 8COptional% E3% 81% AB% E3% 81% AA% E3% 81% A3% E3 % 81% A6% E3% 81% 9F_1)


La zone BOT est très excitante. L'API LINE BOT a ouvert ses portes le 7 avril dernier sur la base du premier arrivé, premier servi. J'ai donc essayé de la vérifier.

[LINE] Avant l'ouverture de l'API de messagerie, le "Compte d'essai de l'API BOT", qui vous permet de développer librement des comptes BOT pour les 10 000 premières personnes, est désormais disponible gratuitement.| LINE Corporation |nouvelles

De plus, j'ai fait référence aux articles suivants dans cette vérification. Merci beaucoup.

Aperçu

Votre propre Bot Linna, style lycéenne, deviendra votre amie LINE et discutera à l'infini sur LINE. Le mécanisme de dialogue utilise l'API de dialogue de discussion de Docomo. Dans l'API de dialogue de discussion, le personnage de lycéenne de Kansai Ben (Sakurako?) Est spécifié, alors je me sens comme ça. L'image est aussi un matériel gratuit pour les lycéennes que j'ai obtenu de Pakutaso, donc l'ambiance est parfaite.

Ce qui suit est une image d'opération. IMG_4208.PNG

Apparemment, cela semble être les deux sentiments.

Comment utiliser

Avec Heroku, n'importe qui peut déployer en un seul clic simplement en préparant le bouton Heroku. Heroku est incroyable!

Cependant, les comptes suivants sont nécessaires pour fonctionner réellement. Créez un compte avant de déployer.

Après avoir préparé ces derniers, veuillez appuyer sur le bouton Heroku à partir du lien ci-dessous.

shiraco/linnabot

Lorsque vous cliquez sur le bouton de déploiement, il vous sera demandé le nom de l'application, la clé API pour chaque LINE / Docomo, etc., alors connectez-vous au tableau de bord pour chaque LINE / Docomo et entrez le contenu confirmé.

Après avoir confirmé que le déploiement a réussi, rouvrez le tableau de bord LINE à partir des éléments suivants et définissez-le comme suit.

https://developers.line.me/channels/

Peut-être que ce sera https: //YOUR_APP_NAME.herokuapp.com: 443 / callback.

linnabot2.png

(Il semble que la liste blanche des adresses IP du serveur soit désormais facultative, ce qui suit n'est donc pas nécessaire)

~~ * Définissez l'adresse IP du fixie outboud de heroku x 2 sur la liste blanche des adresses IP du serveur de LINE ~~

~~ Corrigez l'IP de la source de connexion lors de l'appel de l'API LINE avec fixie et réglez-la pour l'autoriser du côté LINE. ~~

~~linnabot1.png~~

C'est tout pour la configuration, ajoutez simplement un ami à partir du code QR et parlez avec l'application LINE.

Ce que je voulais vérifier

Configuration du système

L'environnement cette fois a la configuration suivante.

Le flux de traitement approximatif est l'image suivante.

linna-archi.png

En termes de traitement, en réponse à quelque chose qui est prononcé sur LINE, le rappel est appelé et le contenu de l'énoncé est renvoyé à l'API de chat de Docomo.

bot.py(Extrait&Modification)


    def on_post(self, req, resp):

        body = req.stream.read()
        receive_params = json.loads(body.decode('utf-8'))

        for msg in receive_params['result']:

            docomo_res = self.docomo_client.send(utt=msg['content']['text'],  #Ce que dit l'utilisateur
                                                 apiname='Dialogue')
            send_content = {
                'to': [msg['content']['from']],
                'toChannel': 1383378250,  # Fixed value
                'eventType': '138311608800106203',  # Fixed value
                'content': {
                    'contentType': 1,
                    'toType': 1,
                    'text': docomo_res['utt'],  #Contenu de la parole de l'API de chat
                },
            }
            send_content = json.dumps(send_content)

            header = {
                'Content-Type': 'application/json; charset=UTF-8',
                'X-Line-ChannelID': os.environ['LINE_CHANNEL_ID'],
                'X-Line-ChannelSecret': os.environ['LINE_CHANNEL_SECRET'],
                'X-Line-Trusted-User-With-ACL': os.environ['LINE_CHANNEL_MID'],
            }

            #Il semble que la liste blanche des adresses IP du serveur soit désormais facultative, il n'est donc plus nécessaire de spécifier des proxys!
            # PROXIES = {'http': os.environ.get('FIXIE_URL', ''), 'https': os.environ.get('FIXIE_URL', '')}
            # res = requests.post(ENDPOINT_URI, data=send_content, headers=header, proxies=PROXIES)
            res = requests.post(ENDPOINT_URI, data=send_content, headers=header)

            resp.body = json.dumps('OK')

Voir le code ci-dessous pour plus de détails si nécessaire. shiraco/linnabot

Où j'étais accro

(Il semble que la liste blanche des adresses IP du serveur soit désormais facultative, ce qui suit n'est donc pas nécessaire)

~~ Lorsque vous accédez à l'API LINE BOT, vous devez définir le fixie addon de Heroku sur le proxy. Comme mentionné ci-dessus, définissez http_proxy & https_proxy en utilisant FIXIE_URL qui est automatiquement défini dans la variable d'environnement Heroku lorsque l'addon est ajouté. (http_proxy peut ne pas être nécessaire à cette fin.) ~~

Résumé

Je viens de connecter l'API de chat à l'API BOT de LINE cette fois, mais l'interface de chat est très conviviale et semble attrayante car elle a le potentiel d'être utilisée par un grand nombre de personnes.

Dans Trial, je pense que l'utilisation principale est comme assistant personnel, comme pouvoir créer un seul Bot ou ne pas pouvoir inviter au groupe LINE, mais LINE, une plate-forme de messagerie majeure, fournit une plate-forme BOT. Je ressens un grand potentiel pour avoir commencé. Il est facile d'imaginer que les restrictions seront assouplies à l'avenir et que diverses applications BOT verront le jour. Gardez un œil sur les tendances futures.

Il convient également de noter que près de 30 messages ont été publiés sur le tag linebot de Qiita en 3 à 4 jours.

référence

Recommended Posts

J'ai essayé de faire mon propre BOT lycéenne avec le style Rinna avec LINE BOT (Python & Heroku)
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
J'ai essayé de rendre mon propre code source compatible avec Chainer v2 alpha
J'ai essayé de faire LINE BOT avec Python et Heroku
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
[Python] Créez votre propre bot LINE
Je veux connaître la météo avec LINE bot avec Heroku + Python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
Les débutants en Python ont décidé de créer un bot LINE avec Flask (commentaire approximatif de Flask)
[AWS] [GCP] J'ai essayé de rendre les services cloud faciles à utiliser avec Python
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
[Zaif] J'ai essayé de faciliter le commerce de devises virtuelles avec Python
Créer un bot Twitter Trend avec heroku + Python
Je veux faire un jeu avec Python
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de sortir LLVM IR avec Python
J'ai essayé d'automatiser la fabrication des sushis avec python
J'ai essayé d'utiliser Linux avec Discord Bot
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
J'ai essayé de refactoriser le code de Python débutant (lycéen)
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé de faire une simulation de séparation de source sonore en temps réel avec l'apprentissage automatique Python
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
Suite ・ J'ai essayé de créer Slackbot après avoir étudié Python3
J'ai essayé de démarrer avec le script python de blender_Partie 02
J'ai essayé d'implémenter le perceptron artificiel avec python
Vous pouvez boire Zoom! !! J'ai essayé de créer un jeu de devinettes de thème coopératif à un seul style avec Flask + Heroku
Les débutants en Python ont créé un chat BOT alors j'ai essayé de résumer comment le faire
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de créer une application OCR avec PySimpleGUI
[Super facile] Faisons un LINE BOT avec Python.
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
[Python] J'ai essayé de faire une application qui calcule le salaire en fonction des heures de travail avec tkinter
J'ai essayé de créer un générateur qui génère une classe conteneur C # à partir de CSV avec Python
J'ai essayé différentes méthodes pour envoyer du courrier japonais avec Python
J'ai essayé de notifier les informations de retard de train avec LINE Notify
J'ai essayé de publier ma propre bibliothèque de baseball Python sur Packaging & PyPI
[Python] J'ai essayé de visualiser des tweets sur Corona avec WordCloud
[Python] J'ai essayé de laisser LINE BOT répondre aux prévisions météo
Mayungo's Python Learning Episode 3: J'ai essayé d'imprimer des nombres
Je souhaite envoyer un message de Python à LINE Bot
J'ai fait un chronomètre en utilisant tkinter avec python