API действий Google, похоже, находит правильный шаблон в моем намерении и привязывается к нужному типу, но не возвращает данные проанализированного типа. Например, если у меня есть намерение, определенное ниже в файле action.json:
{
"description": "",
"initialTrigger": {
"intent": "RepeatIntent",
"queryPatterns": [
{
"queryPattern": "say $SchemaOrg_Number:mynumber"
},
{
"queryPattern": "say $SchemaOrg_Date:mydate"
},
{
"queryPattern": "say $SchemaOrg_Time:mytime"
}
]
},
"httpExecution": {
"url": "https://myurl/repeat"
}
}
и я ввожу в симулятор "в моем действии, скажем, завтра", я получаю следующие аргументы:
"arguments": [
{
"name": "mydate",
"raw_text": "tomorrow",
"text_value": "tomorrow"
},
{
"name": "trigger_query",
"raw_text": "say tomorrow",
"text_value": "say tomorrow"
}
]
Обратите внимание, что SDK действий правильно идентифицировал "завтра" как тип "$SchemaOrg_Date
" и привязал его к переменной mydate, однако он не вернул элемент "date_value" в возвращаемом json, как указано. в документации. Я ожидал, что элемент «date_value» будет содержать проанализированную структуру даты (согласно документу).
То же самое верно и для чисел, хотя они ведут себя немного иначе. Например, если я использую фразу "в моем действии скажем пятьдесят", я получу следующие аргументы:
"arguments": [
{
"name": "mynumber",
"raw_text": "50",
"text_value": "50"
},
{
"name": "trigger_query",
"raw_text": "say fifty",
"text_value": "say fifty"
}
]
Обратите внимание, что $SchemaOrg_Number
было распознано, и «пятьдесят» было правильно проанализировано до «50», но int_value не было заполнено в аргументе json согласно документации.
Google активно анализирует эти сложные типы и задокументировал, что они должны быть возвращены, поэтому я не хочу заниматься их разбором самостоятельно. Есть мысли, будет ли это исправлено в ближайшее время?