Wir haben einen Chat-Bot implementiert, der "den Inhalt der früheren Anfrage des Benutzers in Redis speichert und bei Bedarf darauf verweist, um ihn für die Bot-Antwort zu verwenden". Insbesondere sind die Spezifikationen und Programme wie folgt.
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):
"""Wenn eine Freitextnachricht eingegeben wird"""
type: Literal["message"]
message: Optional[str]
is_first: bool = False
class ButtonCommand(BaseModel):
"""Wenn die Taste gedrückt wird"""
type: Literal["button"]
event: Optional[EventData]
is_first: bool = False
Request.update_forward_refs()
Anfangs hatten wir keine Eigenschaft für "type", und json, das beim Abrufen von Redis "ButtonCommand" sein sollte, wurde versehentlich als leerer "MessageCommand" umgewandelt. Wenn Sie den Standardwert oder "Optional" verwenden, können Sie den falschen json umwandeln.
Durch Angabe einer festen Zeichenfolge mit Literal
in der Eigenschaft type
können Sie das Konvertierungsziel sicher angeben.
Recommended Posts