Tout d'abord, connectez-vous avec votre compte de ligne pour obtenir un compte de développeur de ligne
Créez un nouveau fournisseur à partir de la page d'accueil de la console en haut à gauche
Sélectionnez créer un nouveau canal à partir du fournisseur et le type de canal est l'API de messagerie.
Après cela, effectuez chaque réglage. À ce stade, vous pouvez enregistrer votre propre bot de ligne avec le code qr.
Cette fois, j'appuie sur cette réservation de réunion et je souhaite que l'utilisateur envoie automatiquement la réservation et lui retourne quelque chose
Tout d'abord, connectez-vous ici et sélectionnez le compte que vous avez créé précédemment https://www.linebiz.com/jp/login/ Sélectionnez le menu riche dans le menu de gauche Cliquez sur le bouton Créer en haut à droite Les paramètres d'affichage sont OK par défaut, sauf pour le titre
Pour les paramètres de contenu ci-dessous, sélectionnez un modèle et collez une image, ou créez vous-même une image avec du texte. Si vous pouvez le faire, définissez le type sur texte dans l'action et faites une réservation. Si vous appuyez sur le menu que vous avez enregistré et réellement créé sur votre smartphone, vous recevrez un message indiquant que vous avez effectué une réservation.
Maintenant que j'ai fait cela, j'aimerais revenir sur le message de réservation envoyé par Django.
Cette fois, installez django en utilisant anaconda, qui est un système de gestion de version / package de python. https://www.anaconda.com/products/individual Si vous ne l'avez pas mis, veuillez le télécharger depuis le haut de ↑ Quand anaconda est installé, lancez le navigateur anaconda Sélectionnez des environnements Sélectionnez créer en bas à gauche Nommez-le django37 etc. et sélectionnez python et la version 3.7 Sélectionnez créer en bas à droite pour terminer la construction de l'environnement Dans cet état, django n'est pas encore installé, alors ouvrez le terminal
$ conda activate django37
Lancez l'environnement avec ensuite
$ conda install django37
Installez Django avec Vous disposez maintenant d'un environnement.
Puis d'abord
$ django-admin startproject reception_line_bot
Créez un projet avec.
reception_line_bot/
manage.py
reception_line_bot/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
Je pense que je l'ai fait comme ça. Ensuite, créez une application.
$cd reception_line_bot
Après avoir entré reception_line_bot avec,
$ python manage.py startapp bot
Puis
bot/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
Je pense que c'est devenu. Ensuite, modifiez reception_line_bot / urls.py avec un éditeur.
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),
]
Je pense que c'est le cas, mais dans urlpatterns, spécifiez quelle fonction dans quel fichier la requête de bot de ligne reçue par django doit être envoyée.
Alors cette fois
urls.py
import bot.views
urlpatterns = [
#path('admin/', admin.site.urls),
path('', bot.views.reception),
]
ça ira. la réception est une fonction que nous écrirons dans views.py.
Le secret de canal et le jeton d'accès émis lorsque j'ai créé le bot de ligne avant d'écrire le code dans views.py sont mauvais si je l'écris directement dans le code, je voudrais donc le rendre disponible dans views.py via json. Créez donc setting.json sous line_reception_bot en haut et Sélectionnez un canal parmi les fournisseurs, émettez un jeton d'accès en haut de l'API de messagerie, puis copiez et collez. prochain Obtenez le secret de canal dans les paramètres de base à côté de l'API de messagerie. Je vais copier ces deux dans le setting.json que j'ai fait plus tôt
setting.json
{
"LINE":{
"channel_secret":"fakfkajpdpaida132941",
"access_token":"a3nm7yOY7IoUt8blZ6QqK6RShadfsajdjfadfljfafdsdjsdfailfajjpqjpoejpqjpfjpqejiepqwifqpjdjidcS9yEBGieq+VMQs0EL+mQDtwdB04daft89/aad1O/w1cDnyilFU="
}
}
Comme ça (channel_secret et access_token ont été modifiés de manière appropriée) Ensuite, ouvrez views.py et écrivez du code pour envoyer quelque chose au message envoyé par l'utilisateur.
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_Vérifiez si les charges fonctionnent
Args:
body str:
request json string
Return:
dict:
Seccess:json.loads(body)Valeur de retour de
Error:Message d'échec de connexion
"""
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
"""
Envoyer un message de réponse à l'utilisateur
Args:
token str:
jeton de ligne
message str:
select_Le message renvoyé par la fonction de message
user_id str:
ID utilisateur de la ligne de l'expéditeur du message
"""
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()
C'est tout ce qu'on peut en dire.
Recommended Posts