LINE heroku python

Enregistrement de code

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 #Ajout de ImageMessage, ButtonsTemplate et TemplateSendMessage et MessageAction
)

app = Flask(__name__)

#Obtenir des variables d'environnement
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!"


#Spécifiez une URL pour le webhook LINE Developers afin que le webhook envoie un événement à l'URL
@app.route("/callback", methods=['POST'])
def callback():
   #Obtenez la valeur pour la vérification de la signature à partir de l'en-tête de la demande
   signature = request.headers['X-Line-Signature']

   #Obtenir le corps de la demande
   body = request.get_data(as_text=True)
   app.logger.info("Request body: " + body)

   #Validez la signature et appelez la fonction définie dans le handle s'il n'y a pas de problème
   try:
       handler.handle(body, signature)
   except InvalidSignatureError:
       abort(400)
   return 'OK'

#Dans le cas du texte, retournez le perroquet
# @handler.add(MessageEvent, message=TextMessage)
# def handle_message(event):
#    line_bot_api.reply_message(event.reply_token, TextSendMessage(text=event.message.text))


#Modèle pour obtenir le profil et l'afficher en texte enrichi
@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":
        #Statut enregistré dans LINE_Si le message est vide"Aucun"Utilisez la chaîne de caractères comme valeur alternative
        status_msg = "Aucun"

    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="Succès", text="Que devrions-nous mettre en œuvre ensuite?")]))

    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 #Obtenez l'ID d'image publiée
   message_content = line_bot_api.get_message_content(push_img_id) #Obtenez des images automatiquement enregistrées sur le serveur LINE
   push_img = b""
   for chunk in message_content.iter_content(): 
       push_img += chunk #Image iter_pousser avec du contenu_Remplacer séquentiellement img
   push_img = base64.b64encode(push_img).decode("utf-8") #Base64 encodée pour passer l'API
   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)

référence

Créer LINE BOT

Recommended Posts

LINE heroku python
Fizzbuzz en Python (en une ligne)
Python
[Line / Python] Mémo d'implémentation Beacon
python> impression> N coupures> impression ('\ n' * 3)> 4 coupures> impression ('\ n' * 3),> 3 coupures
Essayez LINE Notify avec Python
J'ai essayé de faire LINE BOT avec Python et Heroku
Diffusion sur LINE en utilisant python
Exécutez LINE Bot implémenté en Python (Flask) "sans utiliser Heroku"
Traitement des arguments de ligne de commande (docopt Python)
Segfo python en une ligne
[Python] Créez votre propre bot LINE
Essayez le SDK Python LINE Pay
Imprimez avec python3 sans interruption
python + django + scikit-learn + mecab (1) avec heroku
Ensuite, utilisez Python (Flask) pour Heroku!
python + django + scikit-learn + mecab (2) avec heroku
Python json.loads () renvoie str dans Heroku
J'ai essayé la notification de ligne en Python
[Introduction] Insérer des sauts de ligne dans Python 3
Implémenté en 1 minute! LINE Notify en Python
Exécutez régulièrement Python sur Heroku Scheduler
Les bases de Python ⑤
Résumé Python
Python intégré
Notation d'inclusion Python
Technique Python
CGI Server (1) édition python en une ligne
Étudier Python
Compte à rebours Python 2.7
Mémorandum Python
Python FlowFishMaster
Service Python
astuces python
fonction python ①
Les bases de Python
ufo-> python (3)
Notation d'inclusion Python
Installer python
Python Singleton
mémo python
Graphique à lignes pliées et ligne d'échelle en python
Python Jinja2
atCoder 173 Python
[Python] fonction
Installation de Python
Installer Python 3.4.3.
Essayez Python
Mémo Python
Laissez Heroku faire le traitement en arrière-plan avec Python
Algorithme Python
Placement de Fabicon (lors de l'utilisation de Python, Flask, Heroku)
Python2 + mot2vec
[Python] Variables
Fonctions Python
Python sys.intern ()
Tutoriel Python
Fraction Python
underbar python C'est ce que