models

Pydantic-модели для запросов и ответов Яндекс Диалогов.

Определяет структуры данных, используемые для валидации входящих запросов от Алисы и формирования ответов навыка.

 1"""
 2Pydantic-модели для запросов и ответов Яндекс Диалогов.
 3
 4Определяет структуры данных, используемые для валидации входящих
 5запросов от Алисы и формирования ответов навыка.
 6"""
 7
 8from typing import Any, Dict, List
 9from pydantic import BaseModel
10
11
12class Meta(BaseModel):
13    """Мета-информация о запросе: локаль, часовой пояс, идентификатор клиента."""
14
15    locale: str
16    timezone: str
17    client_id: str
18    interfaces: Dict[str, Any]
19
20
21class User(BaseModel):
22    """Информация о пользователе Яндекс Диалогов."""
23
24    user_id: str
25
26
27class Application(BaseModel):
28    """Информация о приложении, с которого отправлен запрос."""
29
30    application_id: str
31
32
33class Session(BaseModel):
34    """Данные сессии запроса: идентификаторы сообщения, сессии, навыка и пользователя."""
35
36    message_id: int
37    session_id: str
38    skill_id: str
39    user: User
40    application: Application
41    user_id: str
42    new: bool
43
44
45class Nlu(BaseModel):
46    """NLU-составляющая запроса: токены, сущности и интенты."""
47
48    tokens: List[str]
49    entities: List
50    intents: Dict
51
52
53class Markup(BaseModel):
54    """Разметка запроса, указывающая на опасный контекст."""
55
56    dangerous_context: bool
57
58
59class Request(BaseModel):
60    """Тело запроса от Яндекс Алисы: команда, оригинальная фраза, NLU и разметка."""
61
62    command: str
63    original_utterance: str
64    nlu: Nlu
65    markup: Markup
66    type: str
67
68
69class AliceRequest(BaseModel):
70    """
71    Полный входящий запрос от Яндекс Алисы.
72
73    Содержит мета-информацию, данные сессии, тело запроса и версию протокола.
74    """
75
76    meta: Meta
77    session: Session
78    request: Request
79    version: str
80
81
82class AliceResponse(BaseModel):
83    """
84    Модель ответа навыка Яндекс Алисы.
85
86    Включает текст ответа, данные сессии и версию протокола.
87    """
88
89    response: Dict[str, Any]
90    session: Dict[str, Any]
91    version: str = "1.0"
class Meta(pydantic.main.BaseModel):
13class Meta(BaseModel):
14    """Мета-информация о запросе: локаль, часовой пояс, идентификатор клиента."""
15
16    locale: str
17    timezone: str
18    client_id: str
19    interfaces: Dict[str, Any]

Мета-информация о запросе: локаль, часовой пояс, идентификатор клиента.

locale: str = PydanticUndefined
timezone: str = PydanticUndefined
client_id: str = PydanticUndefined
interfaces: Dict[str, Any] = PydanticUndefined
class User(pydantic.main.BaseModel):
22class User(BaseModel):
23    """Информация о пользователе Яндекс Диалогов."""
24
25    user_id: str

Информация о пользователе Яндекс Диалогов.

user_id: str = PydanticUndefined
class Application(pydantic.main.BaseModel):
28class Application(BaseModel):
29    """Информация о приложении, с которого отправлен запрос."""
30
31    application_id: str

Информация о приложении, с которого отправлен запрос.

application_id: str = PydanticUndefined
class Session(pydantic.main.BaseModel):
34class Session(BaseModel):
35    """Данные сессии запроса: идентификаторы сообщения, сессии, навыка и пользователя."""
36
37    message_id: int
38    session_id: str
39    skill_id: str
40    user: User
41    application: Application
42    user_id: str
43    new: bool

Данные сессии запроса: идентификаторы сообщения, сессии, навыка и пользователя.

message_id: int = PydanticUndefined
session_id: str = PydanticUndefined
skill_id: str = PydanticUndefined
user: User = PydanticUndefined
application: Application = PydanticUndefined
user_id: str = PydanticUndefined
new: bool = PydanticUndefined
class Nlu(pydantic.main.BaseModel):
46class Nlu(BaseModel):
47    """NLU-составляющая запроса: токены, сущности и интенты."""
48
49    tokens: List[str]
50    entities: List
51    intents: Dict

NLU-составляющая запроса: токены, сущности и интенты.

tokens: List[str] = PydanticUndefined
entities: List = PydanticUndefined
intents: Dict = PydanticUndefined
class Markup(pydantic.main.BaseModel):
54class Markup(BaseModel):
55    """Разметка запроса, указывающая на опасный контекст."""
56
57    dangerous_context: bool

Разметка запроса, указывающая на опасный контекст.

dangerous_context: bool = PydanticUndefined
class Request(pydantic.main.BaseModel):
60class Request(BaseModel):
61    """Тело запроса от Яндекс Алисы: команда, оригинальная фраза, NLU и разметка."""
62
63    command: str
64    original_utterance: str
65    nlu: Nlu
66    markup: Markup
67    type: str

Тело запроса от Яндекс Алисы: команда, оригинальная фраза, NLU и разметка.

command: str = PydanticUndefined
original_utterance: str = PydanticUndefined
nlu: Nlu = PydanticUndefined
markup: Markup = PydanticUndefined
type: str = PydanticUndefined
class AliceRequest(pydantic.main.BaseModel):
70class AliceRequest(BaseModel):
71    """
72    Полный входящий запрос от Яндекс Алисы.
73
74    Содержит мета-информацию, данные сессии, тело запроса и версию протокола.
75    """
76
77    meta: Meta
78    session: Session
79    request: Request
80    version: str

Полный входящий запрос от Яндекс Алисы.

Содержит мета-информацию, данные сессии, тело запроса и версию протокола.

meta: Meta = PydanticUndefined
session: Session = PydanticUndefined
request: Request = PydanticUndefined
version: str = PydanticUndefined
class AliceResponse(pydantic.main.BaseModel):
83class AliceResponse(BaseModel):
84    """
85    Модель ответа навыка Яндекс Алисы.
86
87    Включает текст ответа, данные сессии и версию протокола.
88    """
89
90    response: Dict[str, Any]
91    session: Dict[str, Any]
92    version: str = "1.0"

Модель ответа навыка Яндекс Алисы.

Включает текст ответа, данные сессии и версию протокола.

response: Dict[str, Any] = PydanticUndefined
session: Dict[str, Any] = PydanticUndefined
version: str = '1.0'