This repository has been archived by the owner on Apr 9, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
models.go
149 lines (117 loc) · 6.6 KB
/
models.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package dialogs
type (
// Question содержит информацию о входящем запросе пользователя.
Question struct {
// Информация об устройстве, с помощью которого пользователь
// разговаривает с Алисой.
Meta Meta `json:"meta"`
// Данные, полученные от пользователя.
Request Request `json:"request"`
// Данные о сессии.
Session Session `json:"session"`
// Версия протокола.
Version string `json:"version"`
}
// Answer представляет собой ответ пользователю.
Answer struct {
// Версия протокола.
Version string `json:"version"`
// Данные о сессии.
Session Session `json:"session"`
// Данные для ответа пользователю.
Response Response `json:"response"`
}
// Response содержит данные для ответа пользователю.
Response struct {
// Текст, который следует показать пользователю.
Text string `json:"text"`
// Ответ в формате TTS (text-to-speech).
TTS string `json:"tts"`
// Кнопки, которые следует показать пользователю.
Buttons []Button `json:"buttons"`
// Признак конца разговора (получая этот флаг в ответе, Алиса
// автоматически завершает работу навыка в приложении).
EndSession bool `json:"end_session"`
}
// Button представляет собой произвольную кнопку в диалоге.
Button struct {
// Текст кнопки.
Title string `json:"title"`
// Произвольный JSON, который Яндекс.Диалоги должны отправить
// обработчику, если данная кнопка будет нажата.
Payload Payload `json:"payload,omitempty"`
// URL, который должна открывать кнопка.
URL string `json:"url"`
// Признак того, что кнопку нужно убрать после следующего запроса
// пользователя. Допустимые значения:
// * false — кнопка должна оставаться активной (значение по умолчанию);
// * true — кнопку нужно скрывать после нажатия.
Hide bool `json:"hide"`
}
// Meta содержит информацию об устройстве, с помощью которого пользователь
// разговаривает с Алисой.
Meta struct {
// Язык в POSIX-формате.
Locale string `json:"locale"`
// Название часового пояса, включая алиасы.
TimeZone string `json:"timezone"`
// Идентификатор устройства и приложения, в котором идет разговор.
ClientID string `json:"client_id"`
}
// Request содержит данные, полученные от пользователя.
Request struct {
// Тип ввода:
// * SimpleUtterance — голосовой ввод;
// * ButtonPressed — нажатие кнопки.
Type string `json:"type"`
// Формальные характеристики реплики, которые удалось выделить
// Яндекс.Диалогам. Отсутствует, если ни одно из вложенных свойств не
// применимо.
Markup Markup `json:"markup,omitempty"`
// Текст пользовательского запроса без активационных фраз Алисы и
// конкретного навыка.
Command string `json:"command"`
// Полный текст пользовательского запроса.
OriginalUtterance string `json:"original_utterance"`
// JSON, полученный с нажатой кнопкой от обработчика навыка (в ответе на
// предыдущий запрос).
Payload Payload `json:"payload,omitempty"`
}
// Markup содержит формальные характеристики реплики, которые удалось
// выделить Яндекс.Диалогам. Отсутствует, если ни одно из вложенных свойств
// не применимо.
Markup struct {
// Признак реплики, которая содержит криминальный подтекст (самоубийство,
// разжигание ненависти, угрозы). Вы можете настроить навык на
// определенную реакцию для таких случаев — например, отвечать "Не
// понимаю, о чем вы. Пожалуйста, переформулируйте вопрос."
//
// Возможно только значение true. Если признак не применим, это свойство
// не включается в ответ.
DangerousContext bool `json:"dangerous_context,omitempty"`
}
// Session содержит данные о сессии.
Session struct {
// Признак новой сессии. Возможные значения:
// * true — пользователь начал новый разговор с навыком;
// * false — запрос отправлен в рамках уже начатого разговора.
New bool `json:"new"`
// Уникальный идентификатор сессии, 64 байта.
SessionID string `json:"session_id"`
// Идентификатор сообщения в рамках сессии. Инкрементируется с каждым
// следующим запросом.
MessageID int64 `json:"message_id"`
// Идентификатор вызываемого навыка.
SkillID string `json:"skill_id"`
// Обфусцированный идентификатор пользователя.
UserID string `json:"user_id"`
}
// Payload представляет собой произвольные JSON данные, идущие c кнопкой.
Payload interface{}
)
const (
// TypeSimpleUtterance является идентификатором события голосового ввода
TypeSimpleUtterance = "SimpleUtterance"
// TypeButtonPressed является идентификатором события нажатия на кнопку
TypeButtonPressed = "ButtonPressed"
)