Другой альтернативой является использование viv.geo.SearchTerm в обучении и viv.geo.NamedPoint в ваших действиях.Это позволяет пользователю сказать что-то неполное, например «1 Market Street, California», и Биксби будет использовать поиск карт ЗДЕСЬ, чтобы найти это в Сан-Франциско.
Чтобы использовать, настройте концепцию NamedPoint (после импорта viv.geo)
structure (InputAddress) {
role-of (geo.NamedPoint)
}
Затем в своем действии вы можете сделать что-то вроде:
input (namedPoint) {
type (InputAddress)
min (Required) max (One)
default-select {
with-learning
with-rule {
select-first
}
}
}
В этом примере, используя learning и select-first, вы автоматически выберете первый адрес.Без этого Биксби автоматически получит адреса.
namedPoint будет затем передан на вашу конечную точку, и вы сможете анализировать при необходимости.
В процессе обучения используйте geo.SearchTerm - например:
[g:GetAddressAction] My address is {[g:InputAddress] (665 Clyde Ave Mountain View California)[v:geo.SearchTerm]}
или для приглашения вы можете использовать:
[g:GetAddressAction:continue:InputAddress] {[g:InputAddress] (60 S Market)[v:geo.SearchTerm]}
Вы можете получить более полностью отформатированный адрес, разрешив Bixby обрабатывать его, используяцель viv.geo.ResolveAddressByPlaceID.Вот полное действие с использованием NamedPoint и ResolveAddressByPlaceID.Обратите внимание на ссылки на соответствующие документы в комментариях
action (GetAddressAction) {
type(Search)
description (Get Address)
collect {
// See https://bixbydevelopers.com/dev/docs/dev-guide/developers/library.geo#using-searchterm - used in training
// and https://bixbydevelopers.com/dev/docs/dev-guide/developers/library.geo#namedpoint - used below and for computed-input
input (namedPoint) {
type (InputAddress)
min (Required) max (One)
default-select {
with-learning
with-rule {
select-first
}
}
// hidden - Hide if all you need is address
}
computed-input (address){
type (geo.Address)
min (Optional) max (One)
compute {
intent {
goal: viv.geo.ResolveAddressByPlaceID
value: $expr(namedPoint.placeID)
}
}
}
}
output (geo.Address)
}