Eine Seite mit ähnlichem Inhalt ist bereits im Internet. Ich denke jedoch, es wäre schön, eine Seite zu haben, die die folgenden Fragen beantwortet, und ich werde einen Artikel schreiben, damit jemand mit ähnlichen Fragen erstochen wird.
――Ich habe nach "Nachricht vom LINE-Programm senden" gesucht, bin mir aber nicht sicher, da LINE-Benachrichtigung, offizielles LINE-Konto, LINE @ usw. herausgekommen sind. ――Ich möchte es nur senden, aber wenn ich mir den Artikel im Internet ansehe, kommt der Server plötzlich heraus und sagt "Lass uns einen Server vorbereiten" und ich bin verwirrt.
Eine grobe und einfache Antwort ...
――Die LINE-Messaging-API, die nach dem Erwerb des offiziellen LINE-Kontos verwendet werden kann, wird verwendet. ――Sie können von Ihrem eigenen Standort aus (ohne Server) "senden", benötigen jedoch die ID des Zielbenutzers, um das Ziel anzugeben. Sie benötigen einen Server, um es zu bekommen. Aber es ist okay, weil du es mit Heroku kostenlos machen kannst.
Wir werden antworten auf "Ich weiß nicht, ob LINE Notify, LINE Official Account, LINE @ usw. herauskommen werden".
Erstellen Sie also zuerst ein offizielles LINE-Konto und verwenden Sie dann die LINE-Messaging-API.
Sie finden es unter Was ist ein offizielles LINE-Konto? Preiseinführung. Möglicherweise können Sie so viele automatische Antworten kostenlos verwenden, wie Sie möchten, und Sie können die Push-Funktion (aktives Senden, das Ziel, was Sie diesmal tun möchten) für bis zu 1.000 Nachrichten pro Monat kostenlos verwenden.
In der Abbildung sieht es so aus. Wenn Sie sich die Abbildung ansehen, können Sie sehen, warum Sie einen Server benötigen.
Es ist nicht das "offizielle LINE-Konto", das Nachrichten an jeden Benutzer sendet. Es ist ein "Kanal".
Auf der linken Seite ist der Gesprächspartner kein offizieller Account, sondern ein Kanal. Erstellen Sie also zuerst ein "offizielles LINE-Konto", erstellen Sie einen "Anbieter" für dieses untergeordnete Element und erstellen Sie dann einen "Kanal" für dieses untergeordnete Element.
Gehen wir davon aus, dass bereits "LINE Official Account" und "Provider" erstellt wurden.
Sobald Sie einen Kanal erstellt und sich als Freund registriert haben, können Sie an dieser Stelle unter https://manager.line.biz/ sprechen.
Holen Sie sich das "Channel Secret" und "Access Token" aus den Channel-Einstellungen.
Wie oben erwähnt, benötigen Sie die ID dieses Benutzers, um automatisch eine Nachricht an jemanden zu senden.
Die Benutzer-ID kann von Json bezogen werden. Der Benutzer sendet einmal eine Nachricht an den Kanal und der Kanal sendet sie dann an seinen Server. Erstellen Sie als Nächstes eine Webanwendung in Python, die auf dem Server bereitgestellt werden soll.
In meinem Fall verwende ich pipenv, also bereite ich die Umgebung so vor.
pipenv install flask line-bot-sdk gunicorn
Ich habe das Python-Skript my_flask_script.py genannt. Der Basiscode wurde aus der line-bot-sdk-Dokumentation entnommen und geändert.
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,
)
#Umgebungsvariablen abzurufen.
import os
#Protokoll ausgeben.
import logging
import sys
app = Flask(__name__)
#Protokoll zur Standardausgabe. Heroku-Protokolle--Dies ist mit dem Schwanz zu überprüfen.
# app.logger.Da es von info ausgegeben wird, stellen Sie den Pegel auf INFO.
app.logger.addHandler(logging.StreamHandler(sys.stdout))
app.logger.setLevel(logging.INFO)
#Erhalten Sie wichtige Informationen aus Umgebungsvariablen.
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)
#Obwohl es nicht erforderlich ist, werde ich eine Top-Seite hinzufügen, um zu überprüfen, ob es um den Server geht.
@app.route('/')
def top_page():
return 'Here is root page.'
#Auf diese URL wird zugegriffen, wenn der Benutzer eine Nachricht sendet.
@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 der Antwort.
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text='Dies wird vom Rückrufprozess gesendet:'+event.message.text))
if __name__ == '__main__':
app.run()
# runtime.txt:Beschrieb die Python-Version.
echo python-3.7.4 > runtime.txt
# requirements.txt:Beschreibung der abhängigen Bibliotheken.
pip freeze > requirements.txt
# Procfile:Beschreibt, wie das Programm ausgeführt wird.
echo web: gunicorn my_flask_script:app --log-file - > Procfile
Procfile funktionierte aus irgendeinem Grund in web: python my_flask_script.py
nicht. Die Procfile --log-file
ist eine Option zum Ausspucken von Protokollen. -
zeigt auf stdout. Wenn Sie dies einstellen, können Sie die Protokolle später mit "heroku logs --tail" überprüfen.
Nehmen wir an, Sie haben bereits einen Heroku-Account.
#Git-Repository erstellen.
git init
#Erstellen Sie als persönliches Hobby zunächst ein leeres Commit.
git commit --allow-empty -m "Initial Commit"
#Übernehmen Sie alle Dateien.
git add --all
git commit -m "Add all files"
#Der App-Name ist diesmal line-messaging-py-py-Versuchen Sie es py zu machen.
heroku create line-messaging-py-py-py
#Umgebungsvariablen festlegen.
heroku config:set CHANNEL_ACCESS_TOKEN="Kopieren Sie das Zugriffstoken von der Seite mit den Kanaleinstellungen" --app line-messaging-py-py-py
heroku config:set CHANNEL_SECRET="Kopieren Sie das Kanalgeheimnis von der Seite Kanaleinstellungen" --app line-messaging-py-py-py
#In Herokus Repository hochgeladen.
git push heroku master
#Wenn unterwegs etwas schief geht, löschen Sie es mit destroy und beginnen Sie erneut mit create.
# heroku apps:destroy --app line-messaging-py-py-py
Ich habe auch eine Methode für die oberste Seite erstellt, damit ich sie öffnen kann.
Ich habe festgestellt, dass der Upload erfolgreich war.
Registrieren Sie die Webhook-URL auf der Seite mit den Kanaleinstellungen, um das Senden von Webhooks zu aktivieren. Im obigen Python-Skript lautet die URL, die Rückrufe akzeptiert, "/ callback". Diesmal lautet die Webhook-URL "https: // line-messaging-py-py-py.herokuapp.com / callback".
Ich bin mir nicht sicher, aber wenn ich eine "Verbindungsprüfung" durchführe, erscheint ein roter Buchstabe, der uns unruhig macht. Es gab jedoch kein Problem, wenn ich so weitermachte, wie es war ...
Unten auf der Seite mit den Kanaleinstellungen befindet sich ein QR-Code, über den Sie diesen Kanal als Freund registrieren können.
Sie können sehen, dass die Nachricht zurückgegeben wurde, nachdem Sie den in Python geschriebenen Rückrufprozess durchlaufen haben. Im Moment ist die Kanaleinstellung die Standardeinstellung, daher erhalte ich viele automatische Antworten, aber ich hoffe, dass ich sie später bearbeiten kann.
In my_flask_script.py gibt app.logger.info
die an dieses Skript gesendeten Informationen aus. Sie können es mit heroku logs --tail
überprüfen.
{
"events": [
{
"type": "message",
"replyToken": "********************************",
"source": {
"userId": "*********************************",
"type": "user"
},
"timestamp": 1572247838104,
"message": {
"type": "text",
"id": "**************",
"text": "foo bar baz"
}
}
],
"destination": "*********************************"
}
Notieren Sie sich hier die Benutzer-ID, da Sie sie später für push_message verwenden möchten. Wenn Sie es in Ihren Code aufnehmen möchten, gehen Sie folgendermaßen vor:
event.source.user_id
Das ist das Ziel. Sie können Nachrichten aktiv senden, indem Sie das oben notierte "Zugriffstoken" und die "Benutzer-ID" verwenden. Natürlich muss dies nicht auf Heroku hochgeladen werden, Sie können es lokal versuchen.
push_message.py
from linebot import LineBotApi
from linebot.models import TextSendMessage
CHANNEL_ACCESS_TOKEN = 'KANAL oben verwendet_ACCESS_Gleich wie TOKEN'
USER_ID = 'Der oben angegebene Wert von userId'
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
line_bot_api.push_message(
USER_ID,
TextSendMessage(text='Das ist Pushumesseji. Hallo!'))
Wie Sie sehen, können Sie jederzeit eine Nachricht senden, wenn Sie die Benutzer-ID für jeden Benutzer eindeutig halten. Ende. Es war ein langer Artikel ...