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!
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! (゚ Д ゚)
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
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 ~ (* ´Д `)
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.
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)
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!
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! (* ´ ▽ ` *)
YES!NINJA! Vous avez renvoyé le perroquet correctement! C'est un succès ♪
--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 ^)
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! (^^) /
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