Une page avec un contenu similaire est déjà sur le net. Cependant, je pense que ce serait bien d'avoir une page qui répond aux questions suivantes que j'ai, et j'écrirai un article pour que quelqu'un avec des questions similaires soit poignardé.
―― J'ai recherché «Envoyer un message depuis le programme LINE», mais je ne suis pas sûr car LINE Notify, le compte officiel LINE, LINE @, etc. sont sortis. ――Je veux juste l'envoyer, mais quand je regarde l'article sur le net, je suis confus car le serveur apparaît soudain en disant "Préparons un serveur".
Une réponse simple et grossière ...
―― L'API de messagerie LINE qui peut être utilisée après l'acquisition du compte LINE officiel est utilisée. ―― Vous pouvez «envoyer» depuis votre propre emplacement (sans serveur), mais vous avez besoin de l'ID de l'utilisateur de destination pour spécifier la destination. Vous aurez besoin d'un serveur pour l'obtenir. Mais ce n'est pas grave car vous pouvez le faire gratuitement avec Heroku.
Nous répondrons à "Je ne sais pas si LINE Notify, compte officiel LINE, LINE @, etc. sortira".
Alors, créez d'abord un compte LINE officiel, puis utilisez l'API de messagerie LINE.
Vous pouvez le trouver dans Qu'est-ce qu'un compte officiel LINE? Introduction des prix. Peut-être que vous pouvez utiliser autant de réponses automatiques que vous le souhaitez gratuitement, et vous pouvez utiliser jusqu'à 1000 fonctions push (envoi actif, l'objectif de ce que vous voulez faire cette fois) gratuitement par mois.
Cela ressemble à ceci lorsqu'il est illustré. Si vous regardez la figure, vous pouvez voir pourquoi vous avez besoin d'un serveur.
Ce n'est pas le "compte officiel LINE" qui envoie des messages à chaque utilisateur. C'est une "chaîne".
Sur le côté gauche, l'interlocuteur n'est pas un compte officiel mais une chaîne. Alors, créez d'abord un "compte officiel LINE", créez un "fournisseur" pour cet élément enfant, puis créez un "canal" pour cet élément enfant.
Partons du principe que "compte officiel LINE" et "fournisseur" ont déjà été créés.
Une fois que vous avez créé une chaîne et enregistré comme ami, vous pouvez parler sur https://manager.line.biz/ à ce stade.
Obtenez le "Channel Secret" et "Access Token" dans les préférences du canal.
Comme mentionné ci-dessus, vous avez besoin de l'ID de cet utilisateur pour envoyer automatiquement un message à quelqu'un.
L'identifiant de l'utilisateur peut être obtenu auprès de Json, auquel l'utilisateur envoie un message au canal une fois, puis le canal l'envoie à son serveur. Ensuite, créez une application Web en Python à déployer sur le serveur.
Dans mon cas, j'utilise pipenv, donc je prépare l'environnement comme ça.
pipenv install flask line-bot-sdk gunicorn
J'ai nommé le script Python my_flask_script.py. Le code de base a été extrait de la documentation line-bot-sdk et modifié.
my_flask_script.py
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
#Pour obtenir des variables d'environnement.
import os
#Pour sortir le journal.
import logging
import sys
app = Flask(__name__)
#Connectez-vous à la sortie standard. journaux heroku--C'est à vérifier avec la queue.
# app.logger.Puisqu'il est émis par info, réglez le niveau sur INFO.
app.logger.addHandler(logging.StreamHandler(sys.stdout))
app.logger.setLevel(logging.INFO)
#Obtenez des informations importantes à partir des variables d'environnement.
CHANNEL_ACCESS_TOKEN = os.environ['CHANNEL_ACCESS_TOKEN']
CHANNEL_SECRET = os.environ['CHANNEL_SECRET']
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(CHANNEL_SECRET)
#Bien que ce ne soit pas essentiel, j'ajouterai une première page pour vérifier quand il s'agit du serveur.
@app.route('/')
def top_page():
return 'Here is root page.'
#Cette URL est accessible lorsque l'utilisateur envoie un message.
@app.route('/callback', methods=['POST'])
def callback_post():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info('Request body: ' + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def reply_message(event):
#Test de réponse.
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text='Cela sera envoyé à partir du processus de rappel:'+event.message.text))
if __name__ == '__main__':
app.run()
# runtime.txt:Décrit la version Python.
echo python-3.7.4 > runtime.txt
# requirements.txt:Description des bibliothèques dépendantes.
pip freeze > requirements.txt
# Procfile:Décrit comment exécuter le programme.
echo web: gunicorn my_flask_script:app --log-file - > Procfile
Procfile n'a pas fonctionné pour une raison quelconque dans web: python my_flask_script.py
. Le Procfile --log-file
est une option pour cracher les journaux. -
pointe vers stdout. En définissant cela, vous pouvez vérifier les journaux plus tard avec heroku logs --tail
.
Supposons que vous ayez déjà un compte Heroku.
#Créez un référentiel Git.
git init
#En tant que passe-temps personnel, créez d'abord un commit vide.
git commit --allow-empty -m "Initial Commit"
#Validez tous les fichiers.
git add --all
git commit -m "Add all files"
#Le nom de l'application cette fois est line-messaging-py-py-Essayez de le faire py.
heroku create line-messaging-py-py-py
#Définissez les variables d'environnement.
heroku config:set CHANNEL_ACCESS_TOKEN="Copiez le jeton d'accès depuis la page des préférences de la chaîne" --app line-messaging-py-py-py
heroku config:set CHANNEL_SECRET="Copiez le secret de la chaîne depuis la page Préférences de la chaîne" --app line-messaging-py-py-py
#Téléchargé dans le référentiel de Heroku.
git push heroku master
#Si quelque chose ne va pas en cours de route, supprimez-le avec destroy et recommencez avec create.
# heroku apps:destroy --app line-messaging-py-py-py
J'ai également créé une méthode pour la page supérieure, je vais donc l'ouvrir.
J'ai trouvé que le téléchargement était réussi.
Enregistrez l'URL du webhook sur la page des préférences de la chaîne pour activer l'envoi de webhook. Dans le script Python ci-dessus, l'URL qui accepte les rappels est / callback
, donc cette fois l'URL du Webhook est https: // line-messaging-py-py-py.herokuapp.com / callback
.
Je n'en suis pas sûr, mais lorsque je fais une "vérification de connexion", une lettre rouge apparaît, ce qui nous met mal à l'aise. Cependant, il n'y a pas eu de problème si je procédais comme ça ...
Il y a un code QR au bas de la page des préférences de la chaîne, à partir duquel vous pouvez enregistrer cette chaîne en tant qu'ami.
Vous pouvez voir que le message a été renvoyé après avoir suivi le processus de rappel écrit en Python. À l'heure actuelle, le paramètre de canal est la valeur par défaut, donc j'obtiens beaucoup de réponses automatiques, mais j'espère pouvoir le modifier plus tard.
Dans my_flask_script.py, ʻapp.logger.infoaffiche les informations envoyées à ce script. Vous pouvez le vérifier avec
heroku logs --tail`.
{
"events": [
{
"type": "message",
"replyToken": "********************************",
"source": {
"userId": "*********************************",
"type": "user"
},
"timestamp": 1572247838104,
"message": {
"type": "text",
"id": "**************",
"text": "foo bar baz"
}
}
],
"destination": "*********************************"
}
Prenez note de ʻuserId` ici car vous voulez l'utiliser plus tard pour push_message. Si vous voulez l'inclure dans votre code, obtenez-le comme ceci:
event.source.user_id
Tel est le but. Vous pouvez envoyer activement des messages en utilisant le "jeton d'accès" et "userId" que vous avez notés ci-dessus. Bien sûr, cela n'a pas besoin d'être téléchargé sur Heroku, vous pouvez l'essayer localement.
push_message.py
from linebot import LineBotApi
from linebot.models import TextSendMessage
CHANNEL_ACCESS_TOKEN = 'CHANNEL utilisé ci-dessus_ACCESS_Identique à TOKEN'
USER_ID = 'La valeur de userId notée ci-dessus'
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
line_bot_api.push_message(
USER_ID,
TextSendMessage(text='C'est Pushumesseji. salut!'))
Comme vous pouvez le voir, vous pouvez toujours envoyer un message en gardant ʻuser_id`, qui est unique pour chaque utilisateur. fin. Ça a été un long article ...
Recommended Posts