[PYTHON] Bis Django etwas mit einem Linienbot zurückgibt!

Machen Sie einen Linienbot mit Django!

Melden Sie sich zunächst mit Ihrem Leitungskonto an, um ein Leitungsentwicklerkonto zu erhalten image.png

Erstellen Sie einen neuen Anbieter von der Konsolen-Startseite oben links. line.png

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. IMG_0891.jpg

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 image.png Die Anzeigeeinstellungen sind bis auf den Titel standardmäßig in Ordnung image.png

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.

Geben Sie eine Nachricht mit Django zurück

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 image.png 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 image.png 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 image.png 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

Bis Django etwas mit einem Linienbot zurückgibt!
Erstellen Sie mit Django einen LINE-Bot
Ich habe einen Stempelersatzbot mit Linie gemacht
Ich habe einen LINE Bot mit Serverless Framework erstellt!
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
[Python] [LINE Bot] Erstellen Sie einen LINE Bot mit Papageienrückgabe
Ich habe eine WEB-Bewerbung bei Django gemacht
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Erstellen Sie mit Minette für Python einen LINE BOT
Starten Sie Django in einer virtuellen Umgebung mit Pipenv
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
Konfigurieren Sie ein Modul mit mehreren Dateien in Django
Bis Sie eine neue App in Django erstellen
Erstellen Sie mit Amazon Lex einen LINE WORKS-Bot
Mattermost Bot mit Python gemacht (+ Flask)
In Python habe ich einen LINE-Bot erstellt, der Polleninformationen aus Standortinformationen sendet.
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Machen Sie mit LINE + Flask einen morphologischen Analyse-Bot
Ich möchte mit einem Knopf am Kolben übergehen
Lassen Sie einen Papagei LINE Bot mit AWS Cloud9 zurückgeben
Ich möchte mit einem Roboter in Python arbeiten.
Geben Sie eine Zeichenfolge mit Zeilenumbrüchen in PyYAML aus
Iframe in Seite mit Selenium kann nicht bearbeitet werden
[Super einfach] Machen wir einen LINE BOT mit Python.
[LINE Messaging API] Erstellen Sie einen Papageienrückgabe-BOT mit Python
Erklären, wie LINE BOT auf einfachste Weise der Welt erstellt werden kann (2) [Vorbereiten der Bot-Anwendung in einer lokalen Umgebung mit Django of Python]
Versuchen Sie, Python in der mit pipenv erstellten Django-Umgebung auszuführen
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
[In einer Zeile] Visualisiere wie ein Rasen mit nur Pandas
Erstellen Sie mit GoogleAppEngine / py einen LINE-Bot. Einfache nackte Version
Erstellen Sie eine App für maschinelles Lernen mit ABEJA Platform + LINE Bot
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
Erstellen Sie eine Homepage mit Django
Ich habe einen Befehl zum Generieren eines Kommentars für eine Tabelle in Django eingegeben
Machen Sie einen LINE BOT (Chat)
Ich möchte eine Nachricht von Python an LINE Bot senden
Ich kann mich mit Django 3 nicht auf der Admin-Seite anmelden
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Papagei gibt LINE BOT-Erstellung zurück
Ich habe einen Zwietrachtbot gemacht
[Python] Ich habe einen Line-Bot erstellt, der zufällig nach englischen Wörtern fragt
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
Erstellen Sie eine temporäre Datei mit Django als Zip und geben Sie sie zurück
Ich habe einen Twitter-Bot mit Go x Qiita API x Lambda erstellt
[LINE Messaging API] Erstellen Sie einen BOT, der eine Verbindung zu jemandem mit Python herstellt
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich habe eine Entwicklungsumgebung für Django 3.0 mit Docker, Docker-Compose und Poetry erstellt
Laden Sie die Django-Shell mit ipython neu
Ich bekomme einen UnicodeDecodeError mit mecab-python3
Ich habe einen Wikipedia Gacha Bot gemacht
Ich erhalte einen KeyError in pyclustering.xmeans
Stellen Sie die Django-Anwendung mit Docker bereit
Ich habe mit Python eine Lotterie gemacht.
Django-Tipps - Erstellen Sie eine Ranking-Site mit Django-
Erstellen Sie eine Webanwendung mit Django
Machen Sie einen Filter mit einer Django-Vorlage