如何在bixby中确认操作的默认输入?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (4)

我想为“评估”操作收集地址输入。理想情况下,行为将是这样的:

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

我想要做的是添加2个构造函数,这些动作可能会返回geo.Address对象,ReturnSelfAddress和GetCustomAddress。ReturnSelfAddress将从自库包中收集一个地址,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)有没有更好的方法来获得“尝试默认,如果没有或用户拒绝,提示输入”的所需行为?

提问于
用户回答回答于

您可以尝试确认视图,但这是一种您可能觉得有用的更简单的方法。

  1. 使用default-initprompt-behavior(AlwaysElicitation)定义操作模型中的输入
    input (email) {
      type (TypeTextEmail)
      min (Required) max (One)
      default-init {
        intent {
          goal: FetchEmailFromName
          value: $expr(name)
        }
      }
      prompt-behavior (AlwaysElicitation)
    }
  1. 如果用户愿意,定义输入视图以覆盖默认值
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)
      }
    }
  }
}
  1. 您可以下载并尝试example.inputview中的培训示例
  2. 有关确认视图,请参阅Github上的example.shirt

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券