Действия – это точки входа в приложение, которые определяют модель вызова и обнаружения. Действия объявляются в JSON-файле, который называется пакетом действий. Его нужно загрузить в проект разработчика, чтобы протестировать или отправить на проверку проект действий. Пакет действий – это JSON-файл, в котором определены действия в вашем проекте.
Чтобы определить действия в пакете, создайте намерение, которое определяет, как вызывается действие, и соответствующую конечную точку выполнения, когда намерение активируется. Вы можете создавать следующие типы действий:
- Действие по умолчанию. В каждом проекте Actions должно быть приветственное намерение, которое служит точкой входа для пользователей, чтобы начать разговор. Намерение приветствия активируется, когда пользователи явно вызывают действие, произнося его название (например, "Окей, Google, поговори с ExampleAction"). Это намерение идентифицируется по названию
actions.intent.MAIN. - Дополнительные действия для ссылок на контент. Вы можете создать дополнительные действия в пакете действий с намерениями, которые вы определяете сами. Это позволяет пользователям вызывать определенные функции, произнося название действия вместе с намерением (например, "Окей, Google, попроси ExampleAction найти обувь").
Подробнее о том, как работают эти модели вызова, читайте в статье Намерения и вызов.
Как определить действие по умолчанию
В каждом пакете действий должно быть только одно намерение, которое обрабатывает намерение actions.intent.MAIN. Это намерение активируется, когда пользователи вызывают ваше действие по названию (например, "Окей, Google, запусти ExampleAction").
Чтобы создать шаблон пакета действий с названием action.json, выполните следующие действия:
- Скачайте
gactionsCLI. - Создайте локальный каталог для исходных файлов проекта Action.
Выполните в терминале следующие команды:
$ cd PROJECT_DIRECTORY $ gactions init
После создания файла пакета действий замените заполнители своими значениями. Вот пример action.json с изменениями для ExampleAction:
{
"actions": [
{
"description": "Default welcome intent",
"name": "MAIN",
"fulfillment": {
"conversationName": "ExampleAction"
},
"intent": {
"name": "actions.intent.MAIN",
"trigger": {
"queryPatterns": [
"talk to ExampleAction"
]
}
}
}
],
"conversations": {
"ExampleAction": {
"name": "ExampleAction",
"url": "https://www.example.com/ExampleAction"
}
},
"locale": "en"
}Определите дополнительные действия
Вы можете добавить дополнительные действия, которые будут служить точками входа. Это позволяет пользователям уточнить свое намерение, указав больше деталей о том, что они хотят сделать (например, "Окей, Google, попроси ExampleAction найти мне обувь").
Чтобы определить дополнительные действия:
-
В массиве
Например, в следующем коде показано дополнительное действие "Купить", которое определяет:actionsукажите действие для каждой точки входа.- Название намерения:
com.example.ExampleAction.BUY. parameters, которые нужно извлечь из пользовательского ввода при активации этого намерения. Это полезно, если вам нужны определенные данные из фразы действия, когда пользователи вызывают действие.queryPatterns, которые определяют, что пользователи должны сказать, чтобы активировать намерение. Шаблоны запросов могут включать типы Schema.org, которые определяют параметры для анализа.
{ "description": "Direct access", "name": "BUY", "fulfillment": { "conversationName": "ExampleAction" }, "intent": { "name": "com.example.ExampleAction.BUY", "parameters": [ { "name": "color", "type": "org.schema.type.Color" } ], "trigger": { "queryPatterns": [ "find some $org.schema.type.Color:color sneakers", "buy some blue suede shoes", "get running shoes" ] } } }
- Название намерения:
-
Укажите выполнение для этого намерения, задав
conversationName, соответствующий элементу в объектеconversations.{ "conversations": { "ExampleAction": { "name": "ExampleAction", "url": "https://www.example.com/ExampleAction" } } }
Ниже приведен пример полного пакета действий.
{ "actions": [ { "description": "Default welcome intent", "name": "MAIN", "fulfillment": { "conversationName": "ExampleAction" }, "intent": { "name": "actions.intent.MAIN", "trigger": { "queryPatterns": [ "talk to ExampleAction" ] } } }, { "description": "Direct access", "name": "BUY", "fulfillment": { "conversationName": "ExampleAction" }, "intent": { "name": "com.example.ExampleAction.BUY", "parameters": [ { "name": "color", "type": "org.schema.type.Color" } ], "trigger": { "queryPatterns": [ "find some $org.schema.type.Color:color sneakers", "buy some blue suede shoes", "get running shoes" ] } } } ], "conversations": { "ExampleAction": { "name": "ExampleAction", "url": "https://www.example.com/ExampleAction" } }, "locale": "en" }