Melden Sie sich zunächst mit Ihrem Leitungskonto an, um ein Leitungsentwicklerkonto zu erhalten
Erstellen Sie einen neuen Anbieter von der Konsolen-Startseite oben links.
Wählen Sie beim Anbieter die Option Neuen Kanal erstellen aus, und der Kanaltyp ist Messaging-API.
Nehmen Sie danach jede Einstellung vor. Zu diesem Zeitpunkt können Sie Ihren eigenen Zeilenbot mit dem qr-Code registrieren.
Dieses Mal drücke ich auf diese Besprechungsreservierung und möchte, dass der Benutzer die Reservierung automatisch sendet und etwas an sie zurücksendet
Melden Sie sich zunächst hier an und wählen Sie das zuvor erstellte Konto aus https://www.linebiz.com/jp/login/ Wählen Sie das Rich-Menü aus dem Menü links aus. Klicken Sie oben rechts auf die Schaltfläche Erstellen Die Anzeigeeinstellungen sind bis auf den Titel standardmäßig in Ordnung
Wählen Sie für die Inhaltseinstellungen darunter eine Vorlage aus und fügen Sie ein Bild ein oder erstellen Sie selbst ein Bild mit Text. Wenn Sie es schaffen, setzen Sie den Typ in der Aktion auf Text und reservieren Sie. Wenn Sie auf das Menü tippen, das Sie nach dem Speichern auf Ihrem Smartphone tatsächlich erstellt haben, erhalten Sie eine Meldung, dass Sie eine Reservierung vorgenommen haben.
Nachdem ich dies getan habe, möchte ich etwas an die von Django gesendete Buchungsnachricht zurückgeben.
Installieren Sie dieses Mal django mit anaconda, einem Versions- / Paketverwaltungssystem von Python. https://www.anaconda.com/products/individual Wenn Sie es nicht eingegeben haben, laden Sie es bitte oben in ↑ herunter Wenn anaconda installiert ist, starten Sie anaconda navigator Wählen Sie Umgebungen Wählen Sie unten links Erstellen Nennen Sie es django37 usw. und wählen Sie Python und Version 3.7 Wählen Sie unten rechts Erstellen aus, um die Umgebungskonstruktion abzuschließen In diesem Zustand ist Django noch nicht installiert. Öffnen Sie daher das Terminal
$ conda activate django37
Starten Sie die Umgebung mit danach
$ conda install django37
Installieren Sie Django mit Jetzt haben Sie eine Umgebung.
Dann zuerst
$ django-admin startproject reception_line_bot
Erstellen Sie ein Projekt mit.
reception_line_bot/
manage.py
reception_line_bot/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
Ich denke, ich habe es so gemacht. Erstellen Sie als Nächstes eine Anwendung.
$cd reception_line_bot
Nach Eingabe von receive_line_bot mit,
$ python manage.py startapp bot
Dann
bot/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
Ich denke es wurde. Bearbeiten Sie als Nächstes receive_line_bot / urls.py mit einem Editor.
urls.py
"""reception_line_bot URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
import bot.views
urlpatterns = [
path('admin/', admin.site.urls),
]
Ich denke, dies ist der Fall, aber geben Sie in URL-Mustern an, in welcher Funktion die von django empfangene Line-Bot-Anfrage gesendet werden soll.
Also diesmal
urls.py
import bot.views
urlpatterns = [
#path('admin/', admin.site.urls),
path('', bot.views.reception),
]
Wird besorgt. Der Empfang ist eine Funktion, die wir in views.py schreiben werden.
Das Kanalgeheimnis und das Zugriffstoken, die ausgegeben wurden, als ich den Zeilenbot vor dem Schreiben des Codes in views.py erstellt habe, sind fehlerhaft, wenn ich ihn direkt in den Code schreibe. Daher möchte ich ihn über json in views.py verfügbar machen. Erstellen Sie also settings.json unter line_reception_bot oben und Wählen Sie einen Kanal von Anbietern aus, stellen Sie oben in der Messaging-API ein Zugriffstoken aus und kopieren Sie ihn und fügen Sie ihn ein. Nächster Holen Sie sich das Kanalgeheimnis aus den Grundeinstellungen neben der Messaging-API. Ich werde diese beiden in die Einstellung kopieren, die ich zuvor erstellt habe
setting.json
{
"LINE":{
"channel_secret":"fakfkajpdpaida132941",
"access_token":"a3nm7yOY7IoUt8blZ6QqK6RShadfsajdjfadfljfafdsdjsdfailfajjpqjpoejpqjpfjpqejiepqwifqpjdjidcS9yEBGieq+VMQs0EL+mQDtwdB04daft89/aad1O/w1cDnyilFU="
}
}
So (channel_secret und access_token wurden entsprechend geändert) Öffnen Sie dann views.py und schreiben Sie einen Code, um etwas an die vom Benutzer gesendete Nachricht zu senden.
views.py
from django.views.generic import TemplateView
from django.shortcuts import render
from django.http.response import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
import urllib.request
from reception_line_bot.settings import BASE_DIR
# Create your views here.
@csrf_exempt
def reception(request):
json_open = open('setting.json', 'r')
json_load = json.load(json_open)
channel_secret = json_load['LINE']['channel_secret']
access = json_load['LINE']['access_token']
request_body = request.body
data = confirm_json_loads(request_body)
request_body = request.body
body = request.body.decode('utf-8')
print(body)
reply_token = data["events"][0]["replyToken"]
reply_message(reply_token,access)
return JsonResponse({"message":"OK"})
def confirm_json_loads(body:str)->dict:
"""
json_Überprüfen Sie, ob die Lasten funktionieren
Args:
body str:
Anfrage json string
Return:
dict:
Seccess:json.loads(body)Rückgabewert von
Error:Anmeldefehlermeldung
"""
try:
return json.loads(body)
except Exception as e:
print("error")
message = JsonResponse({'message': 'Login failure.'}, status=403)
return message
def reply_message(token:str,access)->None:
return False
"""
Senden Sie eine Antwortnachricht an den Benutzer
Args:
token str:
Zeilentoken
message str:
select_Die von der Nachrichtenfunktion zurückgegebene Nachricht
user_id str:
Leitungsbenutzer-ID des Nachrichtensenders
"""
url = 'https://api.line.me/v2/bot/message/reply'
print(url)
data = {
'replyToken': token,
'messages':[
{
'type': 'text',
'text': "hello world"
},
]
}
print(f"data{data}")
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer'+" "+access
}
print(f"headers:{headers}")
req = urllib.request.Request(url, json.dumps(data).encode(), headers)
print(req)
with urllib.request.urlopen(req) as res:
body = res.read()
Dies ist abgeschlossen.
Recommended Posts