Bixby Developer Center

Guides
References

Property Projection

캡슐의 code 또는 training이 concept 전체가 아닌 concept의 property를 가리켜야 하는 경우가 있습니다. 예를 들어 사용자가 "What will the high be in San Francisco tomorrow?" 같이 전체 일기 예보가 아닌 특정 지역의 온도를 물어볼 수 있습니다. 또는 다른 예로 캡슐의 dialog가 사업체의 운영 시간 같은 구조체 property인 concept에 매치해야 할 수 있습니다. 이러한 상황에서는 property projection을 사용할 수 있습니다.

Property Training

샌프란시스코의 최고 기온을 묻는 앞의 예를 살펴보겠습니다. Bixby는 샌프란시스코의 일기 예보를 가져오되, dialog에는 최고 기온만 반환해야 합니다.

Temperature

Bixby가 이 발화를 제대로 이해하려면 property를 concept이 아닌 goal로 학습할 수 있어야 합니다. property를 가리키려면 concept 이름에 property 이름을 해시(#)로 구분하여 추가합니다.

viv.weather.Weather#highTemperature

이것을 training goal로 설정하면 Bixby에서 viv.weather.Weather concept의 highTemperature property를 이 발화의 인텐트(intent)와 goal로 간주합니다.

Property 매치

from-property 키(key)를 사용하면 구조체(structure) concept 내에서 매치할 property를 지정할 수 있습니다. 예를 들어 지역 사업체 서비스에 대한 Result View에서는 사업체 유형(BusinessCategory)에 사업체를 매치할 수 있습니다.

dialog (Result) {
match {
BusinessCategory (this) {
from-property: Business (business)
}
}
template("#{value(business.name)} has #{joinAs('value', this)}.")
}

View on GitHub

match 키(key)는 BusinessCategory concept에 매치됩니다. from-property는 매치된 BusinessCategory가 반드시 Business concept의 property가 되도록 지정합니다. Businesscategories property를 포함하는 구조체(structure) concept입니다.

match-pattern/models/concepts/Business.model.bxb

또한 _ 와일드카드에 매치하여 유연성을 높일 수도 있습니다. 예를 들어 다음 매치 패턴(match pattern)은 Business 구조체 내의 모든 property에 매치됩니다.

  match {
_ (this) {
from-property: Business (business) {
min (Required)
max (One)
}
}
}

View on GitHub

Property 표시

Property projection에서 property를 사용하려면 해당 property가 planner에 "표시"되어야 합니다. 기본적으로 property는 goal에만 표시되므로 action에 대한 input으로 사용할 수 없습니다.

Property 표시는 visibility 키(key)를 사용하여 제어됩니다. 이 키(key)는 다음 3가지 value 중 하나로 설정할 수 있습니다.

  • Public property는 planner에 전체적으로 표시되므로 property projection이 plan 실행의 어느 시점에서도 이루어질 수 있습니다.
  • Private property는 planner에 표시되지 않으며 action 구현, dialog, layout에서만 사용할 수 있습니다.
  • Default visibility는 goal에서만 planner에 property를 표시하므로 goal에서 property projection과 정렬이 가능합니다.

이 예에서 type(신발 유형) property는 public이므로 property projection 또는 다른 action의 input으로 사용할 수 있습니다.

structure (Shoe) {
property (name) {
type (Name)
min (Required)
}
property (type) {
type (Type)
min (Required)
// make property visible for projections and action input
visibility (Public)
}
}