salut! Je posterai sur Qiita pour la première fois, alors veuillez vous présenter brièvement. Je suis étudiant dans un certain département de coopération informationnelle. (Même si tu dis quelque chose ...) Mes navigateurs préférés sont Firefox et Edge (Chromium).
D'ailleurs, dans la seconde moitié de la première année, nous développerons tous une équipe utilisant Django en classe. J'ai créé un bot LINE l'année dernière, mais à ce moment-là, je n'ai pas trouvé un bon moyen de gérer le Flex Message de l'API LINE Messaging de manière dynamique avec Django, j'ai donc également rédigé un mémorandum de mes meilleures pratiques personnelles. Je vais l'écrire ici aussi. Voir ici pour Flex Message.
Django fournit un langage de modèle appelé Django Template Language. De plus, le message Flex de l'API de messagerie LINE est écrit au format JSON. En les utilisant, j'aimerais adopter l'approche consistant à incorporer des informations dans un fichier JSON modèle et à envoyer un message Flex lorsque le serveur Django envoie un message. (C'est la même chose que pour les fichiers HTML dans Django)
Je pense que vous utilisez généralement render ()
etc. pour incorporer des informations dans un fichier HTML et les envoyer avec Django, mais comme il s'agit d'une réponse HTTP, je ne l'utiliserai pas cette fois. Utilisez plutôt render_to_string ()
.
Cette fois, comme le montre l'image ci-dessous, prenons un bot qui affiche la phrase et la date envoyées avec Flex Message comme exemple. Le texte complet de message.json et views.py utilisé dans l'exemple peut être trouvé dans GitHub Gist.
Ceci est une version légèrement modifiée du LINE [Sample Code] officiel (https://github.com/line/line-bot-sdk-python) pour Django.
import json
from django.conf import settings
from django.views.decorators.csrf import csrf_exempt
from django.template.loader import render_to_string
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.models import (
MessageEvent, TextMessage, FlexSendMessage, BubbleContainer
)
#settings.Obtenez un jeton d'accès, etc. de py (ici vous aimez)
line_bot_api = LineBotApi(channel_access_token=settings.LINE_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(channel_secret=settings.LINE_CHANNEL_SECRET)
#(réduction)
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
msg_text=event.message.text
today_date = datetime.datetime.now()
msg = render_to_string("message.json", {"text": msg_text, "date": today_date})
line_bot_api.reply_message(
event.reply_token,
FlexSendMessage(alt_text = msg_text, contents = BubbleContainer.new_from_json_dict(json.loads(msg)))
)
** L'important est ici **
msg_text=event.message.text
today_date = datetime.datetime.now()
msg = render_to_string("message.json", {"text": msg_text, "date": today_date})
Dans la partie {{text}}
de message.json placée sous le dossier des modèles, msg_text
, qui est le contenu entré dans LINE, est dans la partie de {{date}}
, qui est la date et l'heure actuelles. today_date
est maintenant rempli avec render_to_string ()
.
Ce sont mes meilleures pratiques personnelles lorsque je travaille avec LINE Flex Messages de manière dynamique dans Django. J'espère que tu trouves cela utile.
Recommended Posts