[PYTHON] Comment envoyer un message à LINE avec curl

Mokuji

Déclencheur

J'ai décidé de créer une application qui envoie automatiquement des messages avec LINE, j'ai donc décidé d'utiliser l'API de LINE. J'ai commencé à travailler en pensant que je pouvais envoyer un message avec curl. En conséquence, j'ai pu envoyer un message avec curl en utilisant LINE_API + AWS (APIGateway + lambda). Je voulais prendre note du savoir-faire à ce moment-là, et personnellement, je n'ai pas extrait les informations des informations existantes, alors je les ai postées.

Créer un compte LINE

Tout d'abord, créez un compte LINE normalement. LINE peut créer un compte sans enregistrer «ID» et «mot de passe» dans le système, mais veuillez enregistrer «ID» et «mot de passe» pour créer un compte LINE. Si vous l'avez déjà créé, ce travail est inutile.

Création de BOT et contrôle de fonctionnement

Ensuite, créez un BOT. Après tout, créez un compte pour le développement. Lorsque vous consultez le site Web officiel, vous verrez des termes tels que BOT, fournisseur et canal. Ceux qui comprennent les détails peuvent clairement le distinguer, mais je n'ai pu le comprendre que d'une manière ou d'une autre, probablement à cause de mon manque de compréhension. En conclusion, vous pouvez tout d'abord considérer tout comme un compte ≒ (presque égal).

https://developers.line.biz/ja/docs/messaging-api/overview/

Ajoutez ensuite le fournisseur à la liste des fournisseurs. Vous pouvez comprendre que créer un nouveau compte LINE pour l'envoi et la réponse automatiques.

https://developers.line.biz/console/channel/1653419974/basic/

20191103_1.jpg

20191103_2.jpg

Une fois créé, assurez-vous de pouvoir discuter avec votre compte de développement. Il y a un code QR en bas de l'écran, alors invitons à parler avec votre propre compte que vous avez créé en premier.

Obtenir l'ID de destination

Après avoir confirmé le fonctionnement du BOT, définissez l'URL de l'événement de webhook pour envoyer un message à la salle de discussion existante. La raison pour laquelle ce travail est nécessaire est que lors de l'envoi d'un message, l'ID utilisateur et l'ID de salle de la destination sont requis. Il a été dit que ceux-ci ne peuvent pas être obtenus par les opérations normales de l'utilisateur LINE et ne peuvent pas être facilement obtenus à l'aide de l'application LINE.

20191103_3.jpg

Changez la partie du cadre rouge ci-dessus.

Qu'est-ce qu'un événement Webhook? Il s'agit d'une fonction qui envoie un message fixe à l'URL définie lorsqu'un message est reçu.

C'est là qu'intervient AWS API Gateway + lambda. Définissez l'URL de la passerelle API dans l'URL du webhook.

L'exemple ci-dessous doit être disponible tel quel pour la source de lambda. C'est du python.

lambda_function.py

import json
import traceback

# ==================================================
#Première fonction appelée par lambda
# ==================================================
def lambda_handler(event, context):
    try:
        #Sortie du journal du contenu de la demande
        log(event, 'receive request.')
        createResponse()
        
    except:
        #Lorsqu'une erreur inattendue se produit
        logger.log(traceback.format_exc())
        traceback.print_exc()
        
        return createResponse()

# ==================================================
#Générer une réponse
# ==================================================
def createResponse():
    return {
            'isBase64Encoded': False,
            'statusCode': 200,
            'headers': {},
            'body': {}
        }

# ==================================================
#Sortie de journal
# ==================================================
def log(event, msg):
    print('EVENT >> ' + str(event))
    print('LOG >> ' + str(msg))

Les paramètres de la passerelle API ressemblent à ceci

20191103_5.jpg

Le journal est sorti sur cloudwatch. UserId et roomId doivent y être générés. Vous pouvez les spécifier comme destinations.

20191103_6.jpg

Diagramme d'image pour la compréhension

Diverses choses sont sorties. J'ai essayé de le rendre facile à comprendre. À proprement parler, il y a beaucoup de points différents, mais je pense qu'il est facile de comprendre si je pense de cette façon en fonction de mon propre jugement et de mes préjugés.

20191103_4.jpg

① Le message http est envoyé depuis le téléphone mobile (= le message est envoyé par LINE) ② Le serveur envoie le message reçu au téléphone mobile / BOT de la pièce. ③ Le message POST est envoyé à l'URL enregistrée comme URL de destination du webhook dans BOT.

Envoyer un message avec curl

Enfin, je vais envoyer un message avec curl. L'envoi d'un message avec LINE s'appelle push, et puisque l'API est ouverte au public, envoyez-le en conséquence. https://developers.line.biz/ja/reference/messaging-api/#send-push-message

Au fait, j'ai utilisé une extension chrome appelée ASR. Je pense que tout ce qui peut envoyer un message http est très bien.

Méthode POST URL https://api.line.me/v2/bot/message/push Content-Type application/json Jeton d'authentification émis par le porteur d'autorisation

{
  "to":ID obtenu,
  "messages":[
        {
            "type":"text",
            "text":"Vous pouvez l'envoyer automatiquement comme ça."
        }
    ]
}

Recommended Posts

Comment envoyer un message à LINE avec curl
Comment installer NPI + envoyer un message à la ligne avec python
Envoyer un message à LINE avec Python (LINE Notify)
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Je souhaite envoyer un message de Python à LINE Bot
Comment ajouter un package avec PyCharm
Comment envoyer une requête à l'API DMM (FANZA) avec python
Envoyer un message de Slack à un serveur Python
Comment lire un fichier CSV avec Python 2/3
Comment dessiner un graphique à 2 axes avec pyplot
Comment développer une application de panier avec Django
Comment créer un dictionnaire avec une structure hiérarchique.
Comment dessiner une ligne verticale sur une carte de chaleur dessinée avec Python Seaborn
Comment créer une boîte de saisie Kivy 1 ligne
Procédure de création d'application multi-plateforme avec kivy
[LINE Messaging API] Je souhaite envoyer un message du programme à tout le monde LINE
Comment convertir / restaurer une chaîne avec [] en python
Comment créer un sous-menu avec le plug-in [Blender]
Comment obtenir un utilisateur connecté avec les forms.py de Django
Comment convertir un objet de classe en dictionnaire avec SQLAlchemy
Comment faire du zéro-padding sur une ligne avec OpenCV
Comment faire un jeu de tir avec toio (partie 1)
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
Comment appeler une fonction
Envoyer un signal au sous-processus
Comment mettre à jour avec SQLAlchemy?
Comment lancer avec Theano
Comment pirater un terminal
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment supprimer avec SQLAlchemy?
Envoyer un message Push à LINE Bot lorsque le bouton LTE-M est enfoncé [SORACOM]
Comment déployer une application Web créée avec Flask sur Heroku
Comment créer un BOT Cisco Webex Teams à l'aide de Flask
Comment mettre un lien hypertexte vers "file: // hogehoge" avec sphinx-> pdf
Comment convertir un tableau en dictionnaire avec Python [Application]
Comment sortir un document au format pdf avec Sphinx
Comment créer un maillage de flux autour d'un cylindre avec SnappyHexMesh
Comment imprimer des caractères sous forme de tableau avec la fonction d'impression de Python
Comment faire un simple jeu Flappy Bird avec Pygame
Publier un message sur Google Hangouts Chat avec un fil de discussion (Python)
Comment afficher une liste des versions installables avec pyenv
Comment extraire un index autre qu'un index spécifique avec Numpy
Une histoire sur la façon de traiter le problème CORS
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Créer un message correspondant à la localisation avec la chaîne de traduction python
Comment annuler RT avec Tweepy
Comment faire une traduction japonais-anglais
Python: comment utiliser async avec
Comment mettre un lien symbolique
Pour utiliser virtualenv avec PowerShell
Comment installer python-pip avec ubuntu20.04LTS
Comment créer un bot slack
Comment créer un package Conda