Kürzlich habe ich ein AI / IOT-Seminar besucht. Wie wäre es mit dem Programmieren, um die Fähigkeiten der Angestellten und nicht der Ingenieure zu verbessern? Es war eine Art Geschichte, aber es genügte mir zu denken, dass ich Python berühren sollte! Vielen Dank! (* '∀')
Deshalb bin ich diesmal ein Anfänger von Python und versuche immer, LINEWORKS BOT in Python zu implementieren!
Sprache: Python WEB-Framework: Flasche Editor: Visual Studio-Code Server: Lokale Umgebung (ngrok)
Ich habe keinen Verifizierungsserver, daher ist er immer noch lokal (lacht). Ich liebe ngrok! (゚ Д ゚)
Für den detaillierten Bauvorgang habe ich mich auf die Artikel meiner Senioren bezogen! Vielen Dank! (* '▽') Ich werde es hier nicht erklären, also werde ich einen Link ('ω') No Petapeta posten
Verwenden Sie für die Rückruf-URL bei der Registrierung von BOT die von ngrok erhaltene URL. Wenn Sie einen eigenen Server haben, verwenden Sie diesen natürlich. Damit sind die Einstellungen abgeschlossen!
Schließlich werden wir den BOT-Body mit Python ~ (* ´Д `) erstellen.
Empfangen Sie Nachrichten, die mit Flask an BOT gesendet wurden.
Flask ist Pythons Webframework. In Python scheint Django berühmter und hochfunktioneller zu sein, aber da es persönlich entwickelt wurde, habe ich mich für eine leichte Flasche entschieden.
Ich habe viel Wissen und es hilft wirklich! (* ^ ▽ ^ *)
Lassen Sie uns nun zuerst die empfangene Nachricht auf der Konsole anzeigen. So was.
b'{"type":"message","source":{"accountId":"xxx@yyy-zzz"},"createdTime":1585813140779,"content":{"type":"text","text":"hoge"}}'
Ich werde den Code schreiben.
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"
##Porteinstellung
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8000)
--Um request.get_data () zu verwenden, um eine Nachricht zu empfangen
Es ist die erste Zeile, aber es scheint, dass ich die Nachricht nicht empfangen kann, wenn ich nur den Kolben importiere. Folgen Sie ihm mit ", request" und importieren Sie dann auch die Anfrage.
Ich werde wütend, wenn ich nicht eintrete
Zuerst war ich wütend, als ich die Rückkehr leerte.
TypeError: The view function did not return a valid response.
The function either returned None or ended without a return statement.
Ich habe es vorerst erhalten! Deshalb habe ich "200 ok" zurückgegeben.
… Vielleicht gibt es eine Möglichkeit, es richtig zurückzugeben, wie das Javascript res.send
. (.-`ω-)
--Port ist standardmäßig 5000
Wenn Sie in der Porteinstellung nichts tun, ist der Standardwert 5000.
if __name__ == "__main__":
app.run(debug=True) #Port ist auf 5000 eingestellt
Nein, 5000 ist in Ordnung, aber ngrok hat es auf 8000 gesetzt und es stellte sich heraus, dass "Ich kann keine Verbindung herstellen! (゚ Д ゚)" w
Ich bin darauf gestoßen, aber dank des Wissens meiner Senioren habe ich es selbst gelöst! Vielen Dank! (* '▽')
Fahren wir mit dem nächsten SCHRITT fort!
Ich benutze die LINEWORKS-API, um zu antworten, aber einige Leute haben die Bibliothek auf PyPI veröffentlicht! Vielen Dank! (* ^ ▽ ^ *) PyPI - lineworks 0.1.0
Lassen Sie es uns sofort installieren und verwenden.
pip install lineworks
Fügen Sie nach der Installation den Code hinzu, der sich auf das Beispiel bezieht.
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)
#Nachricht senden (Papagei zurückgeben)
talk_bot.send_text_message(send_text=data['content']['text'], account_id=data['source']['accountId'])
return "200 ok"
##Porteinstellung
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8000)
Führen Sie es mit Visual Studio Code aus und Sie können loslegen! Lass uns reden! (* ´ ▽ ` *)
YES!NINJA! Sie haben den Papagei richtig zurückgegeben! Es ist ein Erfolg ♪
Dies ist ein Stolperstein, aber wie Sie sehen können, ist der Authentifizierungsschlüssel extrem lang und weist seltsame Zeilenumbrüche auf. Es ist also ein wenig mühsam,
" ----- BEGIN PRIVATE KEY ----- \ nMIIEvAIBADANBgkqhkiG9 ... \ n ----- END PRIVATE KEY ----- "
\ nund
\ n, so dass es wird
Legen Sie den Authentifizierungsschlüssel dazwischen und schreiben Sie ihn in eine Zeile.
Verwenden Sie es, nachdem Sie es mit Lasten in der JSON-Bibliothek analysiert haben.
Wenn Sie jedoch versuchen, mit data.source.accountId
und Parametern wie Javascript damit umzugehen, tritt ein Fehler auf. (Es ist sehr wahrscheinlich, dass meine Methode falsch ist ...)
Schreiben Sie daher beim Extrahieren des Inhalts wie oben beschrieben "data ['source'] ['accountId']".
Im Beispiel werden "text" und "accountId" in den JSON-Daten extrahiert und verwendet.
Wie auch immer, es ist geschafft! (^ O ^)
Vielen Dank, dass Sie bisher bei uns geblieben sind.
Nein, was ich mache, ist das gleiche wie gewöhnlich, aber verschiedene Sprachen sind unterschiedlich. Aber ich habe das Gefühl, ein bisschen miteinander auszukommen!
Mit dieser Dynamik möchte ich BOT entwickeln, das mit APIs für maschinelles Lernen funktioniert. wir sehen uns! (^^) /
LINEWORKS Developers Installieren Sie Python und Visual Studio Code unter Windows 10 (Version April 2020) Einfach zu verwendende Flasche LINEbot-Entwicklung, ich möchte den Vorgang in der lokalen Umgebung überprüfen Erste Bot-Entwicklung in LINE WORKS! (Teil 1) Verwenden Sie request.get_data (), um die von Flask veröffentlichten Daten so zu erhalten, wie sie sind Erstellt eine Python-Bibliothek zum Aufrufen der LINE WORKS-API