LINE Heroku Python

Code-Aufzeichnung

from flask import Flask, request, abort
import os

import vision as v
import vision1 as v1
import base64

from linebot import (
   LineBotApi, WebhookHandler
)
from linebot.exceptions import (
   InvalidSignatureError
)
from linebot.models import (
   MessageEvent, TextMessage, TextSendMessage, ImageMessage,ButtonsTemplate,TemplateSendMessage,MessageAction #ImageMessage, ButtonsTemplate und TemplateSendMessage und MessageAction hinzugefügt
)

app = Flask(__name__)

#Umgebungsvariablen abrufen
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]

line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)


@app.route("/")
def hello_world():
   return "hello world!"


#Geben Sie eine URL für den Webhook von LINE Developers an, damit der Webhook ein Ereignis an die URL sendet
@app.route("/callback", methods=['POST'])
def callback():
   #Rufen Sie den Wert für die Signaturüberprüfung aus dem Anforderungsheader ab
   signature = request.headers['X-Line-Signature']

   #Anfragetext abrufen
   body = request.get_data(as_text=True)
   app.logger.info("Request body: " + body)

   #Überprüfen Sie die Signatur und rufen Sie die im Handle definierte Funktion auf, wenn kein Problem vorliegt
   try:
       handler.handle(body, signature)
   except InvalidSignatureError:
       abort(400)
   return 'OK'

#Im Falle von Text geben Sie den Papagei zurück
# @handler.add(MessageEvent, message=TextMessage)
# def handle_message(event):
#    line_bot_api.reply_message(event.reply_token, TextSendMessage(text=event.message.text))


#Muster zum Abrufen des Profils und Anzeigen in Rich Text
@handler.add(MessageEvent, message=TextMessage)
def response_message(event):
    profile = line_bot_api.get_profile(event.source.user_id)

    status_msg = profile.status_message
    if status_msg != "None":
        #Status in LINE registriert_Wenn die Nachricht leer ist"Keiner"Verwenden Sie die Zeichenfolge als alternativen Wert
        status_msg = "Keiner"

    messages = TemplateSendMessage(alt_text="Buttons template",
                                   template=ButtonsTemplate(
                                       thumbnail_image_url=profile.picture_url,
                                       title=profile.display_name,
                                       text=f"User Id: {profile.user_id[:5]}...\n"
                                            f"Status Message: {status_msg}",
                                       actions=[MessageAction(label="Erfolg", text="Was sollen wir als nächstes implementieren?")]))

    line_bot_api.reply_message(event.reply_token, messages=messages)



@handler.add(MessageEvent, message=ImageMessage)
def handle_image_message(event):
   push_img_id = event.message.id #Holen Sie sich die gepostete Bild-ID
   message_content = line_bot_api.get_message_content(push_img_id) #Holen Sie sich Bilder automatisch auf dem LINE-Server gespeichert
   push_img = b""
   for chunk in message_content.iter_content(): 
       push_img += chunk #Bilditer_mit Inhalt pushen_Img nacheinander ersetzen
   push_img = base64.b64encode(push_img).decode("utf-8") #Base64 für die Übergabe der API codiert
   msg = v1.recognize_image2(push_img)
   line_bot_api.reply_message(event.reply_token, TextSendMessage(text=msg))

if __name__ == "__main__":
   #    app.run()
   port = int(os.getenv("PORT"))
   app.run(host="0.0.0.0", port=port)

Referenz

Make LINE BOT

Recommended Posts

LINE Heroku Python
Fizzbuzz in Python (in einer Zeile)
Python
[Line / Python] Beacon-Implementierungsnotiz
Python> Drucken> N Pausen> Drucken ('\ n' * 3)> 4 Pausen> Drucken ('\ n' * 3),> 3 Pausen
Versuchen Sie LINE Notify mit Python
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Online-Übertragung mit Python
Führen Sie den in Python (Flask) implementierten LINE Bot "ohne Verwendung von Heroku" aus.
Befehlszeilenargumentverarbeitung (Python docopt)
Segfo Python in einer Zeile
[Python] Erstelle deinen eigenen LINE-Bot
Probieren Sie das Python LINE Pay SDK aus
Drucken Sie mit python3 ohne Unterbrechungen
Python + Django + Scikit-Learn + Mecab (1) mit Heroku
Verwenden Sie als nächstes Python (Flask) für Heroku!
Python + Django + Scikit-Learn + Mecab (2) mit Heroku
Problem mit Python json.loads (), das str in Heroku zurückgibt
Ich habe Line Benachrichtigung in Python versucht
[Einführung] Fügen Sie Zeilenumbrüche in Python 3 ein
Implementiert in 1 Minute! LINE Benachrichtigen in Python
Führen Sie Python regelmäßig auf Heroku Scheduler aus
Python-Grundlagen ⑤
Python-Zusammenfassung
Eingebaute Python
Python-Einschlussnotation
Python-Technik
CGI Server (1) Python Edition in einer Zeile
Python studieren
Python 2.7 Countdown
Python-Memorandum
Python FlowFishMaster
Python-Dienst
Python-Tipps
Python-Funktion ①
Python-Grundlagen
Ufo-> Python (3)
Python-Einschlussnotation
Installieren Sie Python
Python Singleton
Python-Memo
Gefaltetes Liniendiagramm und Skalierungslinie in Python
Python Jinja2
atCoder 173 Python
[Python] -Funktion
Python-Installation
Python installieren 3.4.3.
Versuchen Sie Python
Python-Memo
Lassen Sie Heroku die Hintergrundverarbeitung mit Python durchführen
Python-Algorithmus
Platzierung von Fabicon (bei Verwendung von Python, Flask, Heroku)
Python2 + word2vec
[Python] -Variablen
Python-Funktionen
Python sys.intern ()
Python-Tutorial
Python-Fraktion
Python Underbar Das ist was