Nous avons implémenté un chat bot, qui consiste à "enregistrer le contenu de la demande passée de l'utilisateur dans Redis et s'y référer si nécessaire pour l'utiliser pour la réponse du bot". Plus précisément, les spécifications et les programmes sont les suivants.
Request
et utilisez-le.json
, enregistrez-le sous forme de chaîne et transtypez-le en type Request
lors de sa récupération.from __future__ import annotations
from typing import Union, Optional
from typing_extensions import Literal
from .event import EventData
class Request(BaseModel):
user_id: str
session_id: str
command: Union[MessageCommand, ButtonCommand]
class MessageCommand(BaseModel):
"""Lorsqu'un message texte libre est saisi"""
type: Literal["message"]
message: Optional[str]
is_first: bool = False
class ButtonCommand(BaseModel):
"""Lorsque le bouton est enfoncé"""
type: Literal["button"]
event: Optional[EventData]
is_first: bool = False
Request.update_forward_refs()
Au départ, je n'avais pas de propriété pour type
, et json, qui devrait être ButtonCommand
lors de la récupération de Redis, a été accidentellement converti en un MessageCommand
vide. Si vous utilisez la valeur par défaut ou ʻOptional`, vous pouvez convertir le mauvais json.
En spécifiant une chaîne de caractères fixe avec Literal
dans la propriété type
, vous pouvez sûrement spécifier la destination de la conversion.
Recommended Posts