Les débutants en Python ont créé un chat BOT alors j'ai essayé de résumer comment le faire

Récemment, je suis allé à un séminaire AI / IOT. En termes de contenu, qu'en est-il de la programmation pour améliorer les compétences du personnel de bureau plutôt que des ingénieurs? C'était une sorte d'histoire, mais il me suffisait de penser que je devais toucher Python! Je vous remercie! (* '∀')

C'est pourquoi cette fois, je suis un débutant en Python, et j'essaie toujours d'implémenter LINEWORKS BOT en Python!

Environnement de production

Langage: python Cadre WEB: Flask Éditeur: Visual Studio Code Serveur: environnement local (ngrok)

Je n'ai pas de serveur de vérification, donc c'est toujours local (rires) J'adore ngrok! (゚ Д ゚)

Environnement

J'ai renvoyé aux articles de mes aînés pour la procédure de construction détaillée! Je vous remercie! (* '▽') Je ne vais pas l'expliquer ici, donc je posterai un lien ('ω') No Petapeta

  1. Installez Python et Visual Studio Code sur votre PC (https://qiita.com/hashito/items/8f77a61ffdfe9f3d0ecb)
  2. Installer Flask
  3. [Publiez votre local vers l'extérieur avec ngrok](https://qiita.com/proken/items/80d20adcf24b2b53c149#%E3%82%84%E3%82%8A%E3%81%8B%E3%81 % 9F)
  4. [Paramètres et enregistrement du bot pour l'utilisation de l'API avec LINEWORKS](https://qiita.com/tokotan/items/f615f4a62219d655436f#developer-console%E3%81%A7api%E3%82%92%E4%BD% BF% E3% 81% 86% E3% 81% 9F% E3% 82% 81% E3% 81% AE% E8% A8% AD% E5% AE% 9A% E3% 81% A8bot% E3% 82% 92% E7% 99% BB% E9% 8C% B2% E3% 81% 99% E3% 82% 8B)

Pour l'URL de rappel lors de l'enregistrement du BOT, utilisez l'URL obtenue par ngrok. Bien sûr, si vous avez votre propre serveur, veuillez l'utiliser. Ceci termine les réglages!

Enfin, nous allons créer le corps du BOT avec Python ~ (* ´Д `)

Recevoir un message au BOT

Recevez les messages envoyés au BOT à l'aide de Flask.

Flask est le framework Web de Python. Django semble être plus célèbre et très fonctionnel en Python, mais comme il a été développé personnellement, j'ai décidé d'utiliser un Flask léger.

J'ai beaucoup de connaissances et ça aide vraiment! (* ^ ▽ ^ *)

Maintenant, affichons d'abord le message reçu sur la console. Comme ça.

1585814270.png

b'{"type":"message","source":{"accountId":"xxx@yyy-zzz"},"createdTime":1585813140779,"content":{"type":"text","text":"hoge"}}'

J'écrirai le code.

bot.py


from flask import Flask, request
app = Flask(__name__)

@app.route('/callback', methods=['POST'])
def callback():
    data = request.get_data()
    print(data)
    return "200 ok"

##réglage du port
if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=8000)

Où j'ai trébuché

C'est la première ligne, mais il semble que je ne puisse pas recevoir le message si je viens d'importer le flacon. Suivez-le avec , request, puis importez également la demande.

retourne je me fâche si je n'entre

Au début, j'étais en colère quand j'ai vidé le retour.

TypeError: The view function did not return a valid response. 
The function either returned None or ended without a return statement.

Je l'ai reçu pour le moment! C'est pourquoi j'ai renvoyé «200 ok». … Il existe peut-être un moyen de le renvoyer correctement, comme le javascript res.send. (.-`ω-)

--Port par défaut à 5000

Si vous ne faites rien dans le réglage du port, la valeur par défaut sera 5000.

if __name__ == "__main__":
    app.run(debug=True) #le port est défini sur 5000

Non, 5000, c'est bien, mais ngrok l'a réglé sur 8000 et il s'est avéré être "Je ne peux pas me connecter! (゚ Д ゚)" w

Je suis tombé dessus, mais grâce aux connaissances de mes aînés, je l'ai résolu moi-même! Je vous remercie! (* '▽')

Passons à la prochaine ÉTAPE!

Répondre lorsque vous recevez un message

J'utilise l'API LINEWORKS pour répondre, mais certaines personnes ont publié la bibliothèque sur PyPI! Merci! (* ^ ▽ ^ *) PyPI - lineworks 0.1.0

Installons-le et utilisons-le immédiatement.

pip install lineworks

Après l'installation, ajoutez le code faisant référence à l'exemple.

lineworks_bot.py


from flask import Flask, request
app = Flask(__name__)

from lineworks import TalkBotApi
api_id = "your api id."
server_api_consumer_key = "your server api consumer key"
server_id = "your server id."
private_key = "your private key."
domain_id = "your domain id."
bot_no = "your bot number."

import json
@app.route('/callback', methods=['POST'])
def callback():
    data = json.loads(request.get_data())
    talk_bot = TalkBotApi(api_id, server_api_consumer_key, server_id, private_key, domain_id, bot_no)
    #Envoyer un message (retourner le perroquet)
    talk_bot.send_text_message(send_text=data['content']['text'], account_id=data['source']['accountId'])
    return "200 ok"

##réglage du port
if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=8000)

Exécutez avec Visual Studio Code et vous êtes prêt à partir! Parlons! (* ´ ▽ ` *)

1586240207.png

YES!NINJA! Vous avez renvoyé le perroquet correctement! C'est un succès ♪

Où j'ai trébuché

--Comment écrire privateKey

C'est une pierre d'achoppement, mais comme vous pouvez le voir, la clé d'authentification est extrêmement longue et présente d'étranges sauts de ligne. Donc c'est un peu gênant, " ----- BEGIN PRIVATE KEY ----- \ nMIIEvAIBADANBgkqhkiG9 ... \ n ----- END PRIVATE KEY ----- " \ net\ n pour qu'il devienne Placez la clé d'authentification entre et écrivez-la sur une ligne.

--Gestion des données JSON

Utilisez-le après l'avoir analysé avec des charges dans la bibliothèque JSON. Cependant, si vous essayez de le gérer avec data.source.accountId et des paramètres comme Javascript, une erreur se produira. (Il est très possible que ma méthode soit fausse ...) Par conséquent, lors de l'extraction du contenu, écrivez data ['source'] ['accountId'] comme décrit ci-dessus. Dans l'exemple, «text» et «accountId »dans les données JSON sont extraits et utilisés.

Bref, c'est fait! (^ O ^)

en conclusion

Merci d'être resté avec nous jusqu'à présent.

Non, ce que je fais est le même que d'habitude, mais les différentes langues sont différentes. Mais j'ai l'impression de m'entendre un peu!

Avec cet élan, j'aimerais développer un BOT qui fonctionne avec des API d'apprentissage automatique. à plus! (^^) /

Je l'ai utilisé comme référence m (_ _) m

LINEWORKS Developers Installer python et Visual Studio Code sur Windows 10 (version d'avril 2020) Flacon facile à utiliser Développement LINEbot, je souhaite vérifier le fonctionnement dans l'environnement local Premier développement de Bot dans LINE WORKS! (Partie 1) Utilisez request.get_data () pour recevoir les données publiées par Flask telles quelles Création d'une bibliothèque Python pour appeler l'API LINE WORKS

Recommended Posts

Les débutants en Python ont créé un chat BOT alors j'ai essayé de résumer comment le faire
[Python] J'ai essayé d'implémenter un tri stable, alors notez
J'ai essayé de résumer comment utiliser matplotlib de python
J'ai essayé de résumer comment utiliser les pandas de python
Comment créer un bot slack
J'ai essayé "Comment obtenir une méthode décorée en Python"
J'ai fait un chronomètre en utilisant tkinter avec python
Un débutant en python a essayé de faire un stage dans une entreprise informatique
[Git] J'ai essayé de faciliter la compréhension de l'utilisation de git stash en utilisant un exemple concret.
J'ai créé une fonction pour découper l'image de python openCV, alors veuillez l'utiliser.
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une expression régulière de "date" en utilisant 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 résumer la gestion des exceptions Python
Entrée standard Python3 que j'ai essayé de résumer
J'ai créé une API Web
J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez
J'ai créé un bot Discord en Python qui se traduit quand il réagit
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
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
Je veux faire un jeu avec Python
J'ai lu "Comment créer un laboratoire de piratage"
J'ai créé un jeu ○ ✕ avec TensorFlow
Made Mattermost Bot avec Python (+ Flask)
Un débutant en python a tenté de faire un stage dans une entreprise informatique [Enquête sur le chatbot jour 2]
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Un débutant en python a tenté de faire un stage dans une entreprise informatique [Processus de développement du jour 1]
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
J'ai créé un Line Bot qui utilise Python pour récupérer les e-mails non lus de Gmail!
Quand j'ai essayé de créer un VPC avec AWS CDK mais que je n'ai pas pu le faire
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
[Python] J'ai essayé de créer une IA Shiritori qui améliore le vocabulaire grâce aux batailles
J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
Je n'ai pas compris le redimensionnement de TensorFlow, alors je l'ai résumé visuellement.
Notez que j'étais accro à la configuration de TensowFlow
L'arbre.plot_tree de scikit-learn était très simple et pratique, j'ai donc essayé de résumer comment l'utiliser facilement.
J'ai essayé de faire un "putain de gros convertisseur de littérature"
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai créé un module Python pour traduire les commentaires
Suite ・ J'ai essayé de créer Slackbot après avoir étudié Python3
J'ai essayé de faire LINE BOT avec Python et Heroku
Comment créer un package Python à l'aide de VS Code
J'ai créé une bibliothèque python qui fait rouler le rang