This guide assumes familiarity with the following information:
Commandnode (Sending a Device Command)
Constantnode (Creating a Bixby Response Using a Device Status)
Equal Comparisonnode (Concatenating Actions)
Responsenode (Creating a Bixby Response Using a Device Status)
In this guide, you'll learn how to get specific values in a usable format from raw JSON data using the
JSON Query node. The device used in this guide is a SmartThings-enabled speaker, with the example utterance "Increase the volume of the speaker by 50".
For this voice command, you must get the result of a command and give the user the information. Sometimes the output of nodes (responses) are in JSON format. To extract information from these responses, you can use the
JSON Query node.
Here is an example JSON response:
To start extracting information, you first need to build your action flow with a
Start node and a
Command node, like in the Sending a Device Command guide.
Startnode's main port to the
Commandnode's trigger port, and the
volumeLevelvalue port to the
Commandnode's Level port.
JSON Querynode to open the Node Configuration menu on the right.
/results/0/statusand the data type
String. This pointer value selects the
statusproperty of the
resultsand parses the
statusproperty from the response JSON. The JSON Pointer configuration selects a value with the JSON Pointer specification.
Commandnode's success port to the
JSON Querynode's trigger port, and its value port to the
JSON Querynode's input port.
Equal Comparisonnode and configure it to use the
JSON Querynode's main port to the
Equal Comparisonnode's trigger port, and its value port to the
Constantnode and configure it to the
Stringvalue of "ACCEPTED."
Constantnode's value port to the
Response: Successnode and a
Response: Execution Failednode to the action flow.
Equal Comparisonnode's true port to the
Response: Successnode's trigger port, and its false port to the
Response: Execution Failednode's trigger port.
The following image shows the finished action flow:
The pointer defines the string syntax for identifying a specific value in a JSON object. Here's an example:
|Output Result Type||Input JSON (Example)||Pointer||Output|
|string or mixed|
To test the action flow, click the Try It button at the top right of the editor window. The flow editor should look like this:
As shown in the example graph, the user's utterance value is 50. The user utterance "Increase the volume of the speaker by 50" executes the SmartThings Capabilities
audioVolume command. For more information, see Sending A Device Command With an Argument.
audioVolume POST command, the server responds with JSON:
JSON Query node selects the
status property of the
results and parses the
status property from the response JSON. Bixby then compares the
status property output by the
JSON Query node to the string "ACCEPTED" in the
Constant node. The
Equal Comparison node determines that these values are equal and triggers the "SUCCESS" response.
The Node Recommendation feature enables you to get recommendations for next possible nodes, and can make it easier to create a graph.