Search code examples
bixby

how to pass along structure property via similar method to Bixby onclick


In a Bixby result-view on the Detail mode I want to provide the user with the option to select from one or more Actions and pass along a hidden parameter "identifier" that corresponds to a database field name to include in the http request made by the Action.

layout {
  match: AltBrainsData (this)

  mode (Details)

  content{

            section {
          content {
            image {
               //aspect-ratio (16:9)
               url {
       template ("#{value(this.icon_image)}")
        }
            }
          }
        }

        section {
          content {

              title-area {
                  slot1 {
                    text("[#{value(this.name)}]")
                    {style(Title_M)}
                  }
                }

          }
        }
        section {
          content {
            paragraph { value ("#{value(this.description)}") style (Detail_L) }
          }
        }
        section {
          content { 
           cell-card {
              slot2 {
              content {
                order (PrimarySecondary)
                primary ("Show me the latest news headlines")

              }
}
             on-click {
               intent {
                   goal: altbrains.persistencetest.GetNews
                   value: altbrains.persistencetest.AltBrainsData("#{value(this.identifier)}")
               }
              }
            }
          }
        }
        ...

I get an error saying that the value must be a primitive.

How can I accomplish this? Basically, I want the result "Detail" card to be populated with one or more possible Actions and each action should pass along this identifier to the corresponding function in code/.

A bit difficult to include all the necessary bits and pieces in Stack Overflow. The money part of the GetNews function is:

function getNews(AltBrainsData) {

  const url = properties.get("config", "baseUrl") + "content"
  console.log("i got this far and the url is ", url);
  const query = {
    apikey: properties.get("secret", "apiKey"),
     q: "{\"" + "identifier" + "\":\"" + AltBrainsData.identifier + "\"}"

  }

Solution

  • Change to the following:

                 on-click {
                   intent {
                       goal: altbrains.persistencetest.GetNews
                       value: $expr(this)
                   }
                  }
    

    You can read more about $expr() syntax in expression language