Несколько команд в Google Assistant SDK

127
17

Я планирую реализовать 2 пользовательских команды с помощью SDK Google Assistant, и я внес соответствующие изменения в файл actions.json (прилагается ниже). Однако, как-то только одна из команд запускается одновременно, то есть либо запуска, либо команды выбора случайным образом. Как заставить его запускать обе команды?

{
"manifest": {
"displayName": "Start Test",
"invocationName": "Start Test",
"category": "PRODUCTIVITY"
},
"actions": [
{
"name": "com.example.actions.StartTest",
"availability": {
"deviceClasses": [
{
"assistantSdkDevice": {}
}
]
},
"intent": {
"name": "com.example.intents.StartTest",
"parameters": [
{
"name": "testname",
"type" : "SchemaOrg_Number"
}
],
"trigger": {
"queryPatterns": [
"prepare test ($SchemaOrg_Number:testname)"
]
}
},
"fulfillment": {
"staticFulfillment": {
"templatedResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Preparing to start test $testname"
}
},
{
"deviceExecution": {
"command": "com.example.commands.StartTest",
"params": {
"testname": "$testname"
}
}
}
]
}
}
}
}
],
"types": [
{
"name": "$testname",
"entities": [
{
"key": "5",
"synonyms": [
"Test5"
]
}
]
}
],

"manifest": {
"displayName": "Select Lane",
"invocationName": "Select Lane",
"category": "PRODUCTIVITY"
},
"actions": [
{
"name": "com.example.actions.SelectLane",
"availability": {
"deviceClasses": [
{
"assistantSdkDevice": {}
}
]
},
"intent": {
"name": "com.example.intents.SelectLane",
"parameters": [
{
"name": "lanename",
"type" : "SchemaOrg_Number"
}
],
"trigger": {
"queryPatterns": [
"select lane ($SchemaOrg_Number:lanename)"
]
}
},
"fulfillment": {
"staticFulfillment": {
"templatedResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Selected lane $lanename"
}
},
{
"deviceExecution": {
"command": "com.example.commands.SelectLane",
"params": {
"lanename": "$lanename"
}
}
}
]
}
}
}
}
],
"types": [
{
"name": "$lanename",
"entities": [
{
"key": "5",
"synonyms": [
"Lane5"
]
}
]
}
]

}

спросил(а) 2021-01-19T16:47:26+03:00 6 месяцев, 2 недели назад
1
Решение
142

Вы должны объединить свои два массива actions. Файл предназначен для набора значений ключа, поэтому повторяющиеся клавиши означают, что значение будет заменено предыдущим:

"actions": [
{
"name": "com.example.action",
// ...
},
{
"name": "com.example.bction",
// ...
}
]

Вы должны сделать то же самое для типов:

"types": [
{
"name": "$type",
// ...
},
{
"name": "$bype"
}
]

ответил(а) 2021-01-19T16:47:26+03:00 6 месяцев, 2 недели назад
45

@Ник Фелкер и Нечестивый

То же самое я сделал, но в моем случае одно действие работало, но не другое. Если пользовательский запрос "5 раз" в этом другом, то ответ, который он дает:


{
"provider": "googleassistant",
"response": {
"partial": "5 x"//here in place of 'x' it should be 'times' its like conflicting } }

ответил(а) 2021-01-19T16:47:26+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема