我想收集一个“评估”动作的地址输入。理想情况下,行为应该是这样的:
1) Evaluate is initiated
2) a default address is pulled from user profile,
user is asked if they would like to use this address
3) if no default address or user does not want to use it,
prompt user for an address
4) Evaluate action runs with either default address or custom input address
我正在考虑做的是添加两个可能返回geo.Address对象的构造函数动作,ReturnSelfAddress和GetCustomAddress。ReturnSelfAddress将从self库封装中收集地址,GetCustomAddress将提示用户输入地址作为geo.UnstructuredAddress,并将其转换为常规geo.Address。
Evaluate操作的输入如下所示:
input (address) {
type (geo.Address)
min (Required)
max (One)
default-init {
intent {
goal: ReturnSelfAddress
}
}
}
然后,我将有一个确认视图,它将确认ReturnSelfAddress,以便用户在需要时进行选择。如果ReturnSelfAddress失败,那么Evaluate仍将查找geo.Address输入。我将有一个与geo.Address概念匹配的输入视图,并提示用户输入geo.UnstructuredAddress。如下所示(不确定这是否100%正确):
input-view {
match: geo.Address(this)
message ("What is your street address?")
render{
form {
elements {
text-input {
id (address)
label("Address")
required (true)
type (geo.UnstructuredAddress)
}
}
on-submit {
goal: GetCustomAddress
value: viv.core.FormElement(address)
}
}
}
}
或者,如果用户拒绝默认设置,那么我将有一个GetCustomAddress作为中止时的目标,它将提示用户:
on-abort {
intent {
goal: GetCustomAddress
}
}
这似乎非常复杂,我正在质疑是否有我可能遗漏的功能,可以帮助我获得所需的行为。所以我想我有两个问题:
1)在我深入这个兔子洞之前,这个想法行得通吗?
2)有没有更好的方法来获得所需的行为“尝试默认,如果没有或用户拒绝,提示输入”?
发布于 2019-05-23 04:20:35
您可以尝试确认视图,但这里有一种更简单的方法,您可能会发现它很有用。
input (email) {
type (TypeTextEmail)
min (Required) max (One)
default-init {
intent {
goal: FetchEmailFromName
value: $expr(name)
}
}
prompt-behavior (AlwaysElicitation)
}
如果用户想要,
input-view {
match: TypeTextEmail(this)
render {
form {
elements {
text-input {
id (this)
type (TypeTextEmail)
label ("Email:")
max-length (50)
value ("#{value(this)}")
}
}
on-submit {
goal: TypeTextEmail
value: viv.core.FormElement(this)
}
}
}
}
https://stackoverflow.com/questions/56243082
复制相似问题