Some Modes on action.devices.traits.Modes does not seem to be working - google-smart-home

I'm playing around with action.devices.traits.Modes trait, and it seems that I cannot get some Mode to work, though I'm 100% sure that I've used mode names exactly as in the documentation.
SYNC Response:
Response {
"status": 200,
"headers": {
"content-type": "application/json;charset=utf-8"
},
"body": {
"requestId": "15896565509066911859",
"payload": {
"agentUserId": "",
"devices": [
{
"id": "Washer",
"type": "action.devices.types.WASHER",
"traits": [
"action.devices.traits.Modes",
"action.devices.traits.OnOff"
],
"name": {
"defaultNames": [
"Washer"
],
"name": "Washer",
"nicknames": [
"Washer"
]
},
"willReportState": false,
"customData": {
"lookupOnExecute": true
},
"attributes": {
"availableModes": [
{
"name": "temperature",
"name_values": [
{
"name_synonym": [
"temperature"
],
"lang": "en"
}
],
"settings": [
{
"setting_name": "Tap Cold",
"setting_values": [
{
"setting_synonym": [
"tap cold"
],
"lang": "en"
}
]
},
{
"setting_name": "Cold Warm",
"setting_values": [
{
"setting_synonym": [
"cold warm"
],
"lang": "en"
}
]
},
{
"setting_name": "Hot",
"setting_values": [
{
"setting_synonym": [
"hot"
],
"lang": "en"
}
]
},
{
"setting_name": "Extra Hot",
"setting_values": [
{
"setting_synonym": [
"extra hot"
],
"lang": "en"
}
]
}
],
"ordered": false
},
{
"name": "Cycle",
"name_values": [
{
"name_synonym": [
"cycle"
],
"lang": "en"
}
],
"settings": [
{
"setting_name": "Low",
"setting_values": [
{
"setting_synonym": [
"low"
],
"lang": "en"
}
]
},
{
"setting_name": "Medium",
"setting_values": [
{
"setting_synonym": [
"medium"
],
"lang": "en"
}
]
},
{
"setting_name": "High",
"setting_values": [
{
"setting_synonym": [
"high"
],
"lang": "en"
}
]
}
],
"ordered": false
}
]
}
}
]
}
}
}
QUERY response:
Response {
"status": 200,
"headers": {
"content-type": "application/json;charset=utf-8"
},
"body": {
"requestId": "17335788264128789760",
"payload": {
"devices": {
"Washer": {
"online": true,
"currentModeSettings": {
"Cycle": "High",
"temperature": "Tap Cold"
},
"on": true
}
}
}
}
}
Why does Cycle query fail? I see Cycle mode in the documentation. Does it support only some settings? Does the case matter? High is also available, so what am I doing wrong?
And Interaction with Google Home:

While the Google Assistant is highly capable of detecting variations in speech while receiving voice commands, it is still a good practice to make the grammar more understandable and as mentioned in the comments. This is related to an issue in the usage of grammar while triggering the right intent, since a change in the way the question was asked solved the purpose.
For the answer to the question "how can I combine Two toggles (Bluetooth and Power Saving) into one trigger – e.g. "Turn on Power Saving and Bluetooth on Home Cinema?" asked in the comments – at the moment Smart Home doesn't allow two commands in a single prompt. For example, you cannot say "Hey Google, turn on my light and change the color". In order to do that you have to execute each command separately.

Related

Google Assistant does not recognize traits name_synonym in italian

I have an issue with the google assistant and my smart home action.
I have implemented the sync intent and this is what I get:
{
"requestId": "15365687660984021903",
"payload": {
"agentUserId": <user_id>,
"devices": [{
"willReportState": true,
"traits": ["action.devices.traits.OnOff", "action.devices.traits.Toggles", "action.devices.traits.FanSpeed", "action.devices.traits.SensorState", "action.devices.traits.HumiditySetting", "action.devices.traits.TemperatureControl", "action.devices.traits.Modes"],
"deviceInfo": {
"model": <model>,
"swVersion": "1.0.0",
"hwVersion": "1.0.0",
"manufacturer": <manufacturer>
},
"name": {
"defaultNames": [],
"name": "Smart Hood",
"nicknames": ["Cop"]
},
"attributes": {
"queryOnlyModes": false,
"availableToggles": [{
"name_values": [{
"name_synonym": ["Light", "Lights"],
"lang": "en"
}, {
"lang": "it",
"name_synonym": ["Luci", "Luce"]
}],
"name": "light"
}, {
"name": "motor",
"name_values": [{
"name_synonym": ["Motor", "Fan"],
"lang": "en"
}, {
"name_synonym": ["Motore", "Ventola"],
"lang": "it"
}]
}],
"commandOnlyModes": true,
"commandOnlyToggles": true,
"temperatureUnitForUX": "C",
"queryOnlyOnOff": false,
"humiditySetpointRange": {
"maxPercent": 100,
"minPercent": 0
},
"queryOnlyTemperatureControl": true,
"queryOnlyHumiditySetting": true,
"commandOnlyOnOff": true,
"commandOnlyFanSpeed": true,
"temperatureRange": {
"minThresholdCelsius": -100,
"maxThresholdCelsius": 100
},
"sensorStatesSupported": [{
"descriptiveCapabilities": {
"availableStates": ["good", "fair", "poor", "unknown"]
},
"name": "AirQuality"
}, {
"descriptiveCapabilities": {
"availableStates": ["clean", "dirty", "needs replacement", "unknown"]
},
"name": "FilterCleanliness"
}, {
"descriptiveCapabilities": {
"availableStates": ["good", "replace soon", "replace now", "unknown"]
},
"name": "FilterLifeTime",
"numericCapabilities": {
"rawValueUnit": "PERCENTAGE"
}
}],
"availableModes": [{
"name": "operatingStatus",
"name_values": [{
"name_synonym": ["Hood mode", "Motor Mode", "Fan Mode"],
"lang": "en"
}, {
"name_synonym": ["Funzione", "Modalità"],
"lang": "it"
}],
"settings": [{
"setting_values": [{
"lang": "en",
"setting_synonym": ["Normal"]
}, {
"lang": "it",
"setting_synonym": ["Normale"]
}],
"setting_name": "normal"
}, {
"setting_name": "auto",
"setting_values": [{
"lang": "en",
"setting_synonym": ["Auto"]
}, {
"lang": "it",
"setting_synonym": ["Auto", "Automatica"]
}]
}, {
"setting_values": [{
"lang": "en",
"setting_synonym": ["Intensive", "Boost"]
}, {
"setting_synonym": ["Intensiva", "Boost"],
"lang": "it"
}],
"setting_name": "intensive"
}, {
"setting_name": "24h",
"setting_values": [{
"setting_synonym": ["24 hours", "h24", "24h"],
"lang": "en"
}, {
"setting_synonym": ["24 ore", "h24", "24h"],
"lang": "it"
}]
}],
"ordered": false
}],
"commandOnlyTemperatureControl": false,
"queryOnlyToggles": false,
"commandOnlyHumiditySetting": false,
"availableFanSpeeds": {
"ordered": false,
"speeds": [{
"speed_values": [{
"speed_synonym": ["Low", "Slow"],
"lang": "en"
}, {
"speed_synonym": ["Bassa", "Lenta"],
"lang": "it"
}],
"speed_name": "low"
}, {
"speed_values": [{
"lang": "en",
"speed_synonym": ["Medium"]
}, {
"lang": "it",
"speed_synonym": ["Medio"]
}],
"speed_name": "medium"
}, {
"speed_values": [{
"lang": "en",
"speed_synonym": ["High", "Fast"]
}, {
"lang": "it",
"speed_synonym": ["Alta", "Veloce"]
}],
"speed_name": "high"
}]
}
},
"type": "action.devices.types.HOOD",
"id": <device_id>
}]
}
}
Until yesterday it worked perfectly.
The problem is that today the google assistant does not recognize the italian synonym but only the ones in english.
But in the response it uses the italian synonym!
The issue started to happen after I choose the language in the Actions console.
what could the problem be?
Thanks for helping.
There are always updates being rolled out from Google on voice recognition features. Sometimes, new traits are modified/added/removed in the most recent update. The language assistant responds you with depends on the language selected in the device, but how the request is parsed depends on a number of factors. Make sure the italian is selected from the settings in the Actions on Google Console, as well as the device you issue the commands from.
If the issue still persists, please open a bug on our Public Issue Tracker.

Alexa custom skill: getting FallbackIntent instead of validation prompt

I have an interaction model with a GetMenuIntent which I can invoke with "what's for {meal}". meal is a MealType custom slot with allowed values of "breakfast" and "lunch". I added validation on the meal slot in my GetMenuIntent to only allow those values defined in the slot type and it works great for those configured values.
However, after saving and building my model, when I put "what's for dinner" into the Utterance Profiler or the interactive tester, It ended up calling my FallbackIntent instead of reprompting for a correct value.
I feel like what I'm trying to do isn't really much different than Amazon's own example here.
Here's "whats for lunch" working correctly:
And here's "whats for dinner" ignoring my GetMenuIntent and calling FallbackIntent instead:
Here's my interaction model:
{
"interactionModel": {
"languageModel": {
"invocationName": "school menus",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": []
},
{
"name": "GetMenuIntent",
"slots": [
{
"name": "meal",
"type": "Meal"
},
{
"name": "date",
"type": "AMAZON.DATE"
}
],
"samples": [
"whats for {meal} {date}",
"what will you have for {meal} {date}",
"what is on the menu for {meal} {date}",
"what are we having for {meal} {date}",
"what we're having for {meal} {date}"
]
},
{
"name": "AMAZON.FallbackIntent",
"samples": []
}
],
"types": [
{
"values": [
{
"name": {
"value": "lunch"
}
},
{
"name": {
"value": "breakfast"
}
}
],
"name": "Meal"
}
]
},
"dialog": {
"intents": [
{
"name": "GetMenuIntent",
"confirmationRequired": false,
"prompts": {},
"slots": [
{
"name": "meal",
"type": "Meal",
"elicitationRequired": false,
"confirmationRequired": false,
"prompts": {},
"validations": [
{
"type": "hasEntityResolutionMatch",
"prompt": "Slot.Validation.806855880612.19281662909.602239253259"
}
]
},
{
"name": "date",
"type": "AMAZON.DATE",
"elicitationRequired": false,
"confirmationRequired": false,
"prompts": {}
}
]
}
],
"delegationStrategy": "ALWAYS"
},
"prompts": [
{
"id": "Slot.Validation.806855880612.19281662909.602239253259",
"variations": [
{
"type": "PlainText",
"value": "Hmm, I don't know about that menu type. Please try again."
}
]
}
]
},
"version": "48"
}
Since this is 6 months old I assume you figured out by now that your interaction model only includes Lunch and Breakfast.

Google Home App does not show fan speed and temperature settings for AC unit

I'm trying to add an AC Unit to Google Home via Google Smart Actions. I have the action configured and successfully linked my app server to the Google Home App.
I have been using the following guide from Google to develop my app server:
https://developers.google.com/assistant/smarthome/guides/acunit
In response to Google's action.devices.SYNC request I am providing the following response:
{
"requestId": "request-id-providing-by-google",
"payload": {
"agentUserId": "unique-user-id",
"devices": [
{
"id": "device-id",
"type": "action.devices.types.AC_UNIT",
"traits": [
"action.devices.traits.FanSpeed",
"action.devices.traits.OnOff",
"action.devices.traits.TemperatureSetting"
],
"name": {
"name": "Air Conditioner"
},
"willReportState": false,
"roomHint": "Room 1",
"deviceInfo": {
"manufacturer": "man",
"model": "hs1234",
"hwVersion": "3.2",
"swVersion": "11.4"
},
"attributes": {
"availableFanSpeeds": {
"speeds": [
{
"speed_name": "speed_one",
"speed_values": [
{
"speed_synonym": [
"one"
],
"lang": "en"
}
]
},
{
"speed_name": "speed_two",
"speed_values": [
{
"speed_synonym": [
"two"
],
"lang": "en"
}
]
},
{
"speed_name": "speed_three",
"speed_values": [
{
"speed_synonym": [
"three"
],
"lang": "en"
}
]
},
{
"speed_name": "speed_four",
"speed_values": [
{
"speed_synonym": [
"four"
],
"lang": "en"
}
]
},
{
"speed_name": "speed_five",
"speed_values": [
{
"speed_synonym": [
"five"
],
"lang": "en"
}
]
}
],
"ordered": true
},
"supportsFanSpeedPercent": false,
"availableThermostatModes": [
"off",
"heat",
"cool",
"fan-only",
"dry",
"on"
],
"thermostatTemperatureRange": {
"minThresholdCelsius": 18,
"maxThresholdCelsius": 30
},
"thermostatTemperatureUnit": "C"
}
}
]
}
}
And in response to Google's action.devices.QUERY request I am providing this response:
{
"requestId": "request-id-providing-by-google",
"payload": {
"devices": {
"device-id": {
"status": "SUCCESS",
"online": true,
"on": true,
"currentFanSpeedSetting": "speed-five",
"thermostatMode": "off",
"thermostatTemperatureAmbient": 25,
"thermostatTemperatureSetpoint": 20,
"thermostatHumidityAmbient": 100
}
}
}
}
As you can see, I have:
Specified that my AC unit supports the On / Off, fan speeds and temperature setting traits
Given the necessary attributes for the specified traits
Provided the current values for the device and related traits
However, when I view this device in the Google Home App it only presents an On / Off button and no controls for fan speed and temperature.
I have looked through all related logs on Google Cloud Logging and there are no errors reports.
I have reviewed these seemingly related issues on the topic but the responses and comments have not resolved the issue:
https://github.com/actions-on-google/smart-home-nodejs/issues/500
https://github.com/actions-on-google/smart-home-nodejs/issues/330
Am I missing some parameters or config for these controls to appear?
Update 07/11 - Useful response from #ToniCorinne pointing out that on the Google Home Smartphone app FanSpeed controls are not currently supported, see this link:
https://developers.google.com/assistant/smarthome/develop/touch-controls#google_home_app
Obviously this doesn't account for TemperatureSettings, so I've opened the following bug with Google which at time of writing has not been assigned:
https://issuetracker.google.com/u/1/issues/205157683
FanSpeed is not currently a supported trait with touch controls in the Google Home app.
TemperatureSetting for an AC_Unit should have touch-controls, however. You could file an issue on the public issue tracker with your SYNC response and applicable information like the Google Home app version you're seeing this issue on for more help.

ElasticSearch aggregation query that concatenate array of strings into one bucket if attribute has value

The aim is to create an aggregation query in ElasticSearch that concatenate array of strings into one bucket if the attribute has a certain value.
An example JSON stored in the ES engine:
{
"header": {
"identifier": "oai:gup.ub.gu.se/264598",
"datestamp": "2019-05-11 11:03:06",
"setSpec": "GU_SWEPUB"
},
"metadata": {
"mods": {
"#attributes": {
"version": "3.5"
},
"recordInfo": {
"recordContentSource": "gu"
},
"note": [
"not verified at registration",
"Published",
"3"
],
"identifier": [
"https://gup.ub.gu.se/publication/264598",
"29405517",
"10.1111/adb.12603"
],
"titleInfo": {
"title": "Activation of amylin receptors attenuates alcohol-mediated behaviours in rodents."
},
"abstract": "Alcohol expresses its reinforcing properties by activating areas of the mesolimbic dopamine system, which consists of dopaminergic neurons projecting from the ventral tegmental area to the nucleus accumbens. The findings that reward induced by food and addictive drugs involve common mechanisms raise the possibility that gut-brain hormones, which control appetite, such as amylin, could be involved in reward regulation. Amylin decreases food intake, and despite its implication in the regulation of natural rewards, tenuous evidence support amylinergic mediation of artificial rewards, such as alcohol. Therefore, the present experiments were designed to investigate the effect of salmon calcitonin (sCT), an amylin receptor agonist and analogue of endogenous amylin, on various alcohol-related behaviours in rodents. We showed that acute sCT administration attenuated the established effects of alcohol on the mesolimbic dopamine system, particularly alcohol-induced locomotor stimulation and accumbal dopamine release. Using the conditioned place preference model, we demonstrated that repeated sCT administration prevented the expression of alcohol's rewarding properties and that acute sCT administration blocked the reward-dependent memory consolidation. In addition, sCT pre-treatment attenuated alcohol intake in low alcohol-consuming rats, with a more evident decrease in high alcohol consumers in the intermittent alcohol access model. Lastly, sCT did not alter peanut butter intake, blood alcohol concentration and plasma corticosterone levels in mice. Taken together, the present data support that amylin signalling is involved in the expression of alcohol reinforcement and that amylin receptor agonists could be considered for the treatment of alcohol use disorder in humans.",
"subject": [
{
"#attributes": {
"lang": "swe",
"authority": "uka.se"
},
"topic": "Neurovetenskaper"
},
{
"#attributes": {
"lang": "eng",
"authority": "uka.se"
},
"topic": "Neurosciences"
}
],
"language": {
"languageTerm": "eng"
},
"genre": [
"publication/journal-article",
"art",
"ref"
],
"name": [
{
"#attributes": {
"type": "personal",
"authority": "gu.se"
},
"namePart": [
"Aimilia Lydia",
"Kalafateli",
"1987"
],
"role": {
"roleTerm": "aut"
},
"affiliation": [
"Göteborgs universitet",
"Institutionen för neurovetenskap och fysiologi, sektionen för farmakologi",
"Gothenburg University",
"Institute of Neuroscience and Physiology, Department of Pharmacology"
]
},
{
"#attributes": {
"type": "personal",
"authority": "gu.se"
},
"namePart": [
"Daniel",
"Vallöf",
"1988"
],
"role": {
"roleTerm": "aut"
},
"affiliation": [
"Göteborgs universitet",
"Institutionen för neurovetenskap och fysiologi, sektionen för farmakologi",
"Gothenburg University",
"Institute of Neuroscience and Physiology, Department of Pharmacology"
]
},
{
"#attributes": {
"type": "personal",
"authority": "gu.se"
},
"namePart": [
"Elisabeth",
"Jerlhag",
"1978"
],
"role": {
"roleTerm": "aut"
},
"affiliation": [
"Göteborgs universitet",
"Institutionen för neurovetenskap och fysiologi, sektionen för farmakologi",
"Gothenburg University",
"Institute of Neuroscience and Physiology, Department of Pharmacology"
]
},
{
"#attributes": {
"type": "corporate",
"lang": "swe",
"authority": "gu.se"
},
"namePart": [
"Göteborgs universitet",
"Sahlgrenska akademin",
"Institutionen för neurovetenskap och fysiologi, sektionen för farmakologi"
]
},
{
"#attributes": {
"type": "corporate",
"lang": "eng",
"authority": "gu.se"
},
"namePart": [
"Gothenburg University",
"Sahlgrenska Academy",
"Institute of Neuroscience and Physiology, Department of Pharmacology"
]
}
],
"originInfo": {
"dateIssued": "2019"
},
"relatedItem": {
"#attributes": {
"type": "host"
},
"titleInfo": {
"title": "Addiction biology"
},
"identifier": "1369-1600",
"part": {
"detail": [
{
"#attributes": {
"type": "volume"
},
"number": "24"
},
{
"#attributes": {
"type": "issue"
},
"number": "3"
}
],
"extent": {
"start": "388",
"end": "402"
}
}
},
"typeOfResource": "text"
}
}
}
The query created so far:
{
"sort": [
{
"metadata.mods.originInfo.dateIssued.keyword": {
"order": "desc"
}
}
],
"query": {
"multi_match": {
"query": "Sahlgrenska Academy",
"type": "best_fields",
"fields": [
"metadata.mods.name.namePart"
],
"operator": "and"
}
},
"aggs": {
"yearSpan": {
"terms": {
"field": "metadata.mods.originInfo.dateIssued.keyword",
"size": 2500
}
},
"authorcloud": {
"terms": {
"field": "metadata.mods.name.namePart.keyword",
"size": 150
}
},
"cloud": {
"terms": {
"field": "metadata.mods.subject.topic.keyword",
"size": 150
}
}
},
"stored_fields": []
}
I would like to change the query above so that
authorcloud aggregation only include fields where name.#attributes.type="personal" and that the different strings in the array name.namePart is concatenated into the same bucket. IE This array build up a single bucket in the authorcloud:
"namePart": [
"Aimilia Lydia",
"Kalafateli",
"1987"
],
yields:
bucket = "Aimilia Lydia Kalafateli 1987"
It's been over two years, but I found myself with the same question.
I was able to accomplish it using "adjacency_matrix" aggregation
Example aggregation
GET kibana_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"interactions": {
"adjacency_matrix": {
"filters": {
"grpA": {
"match": {
"manufacturer.keyword": "Low Tide Media"
}
},
"grpB": {
"match": {
"manufacturer.keyword": "Elitelligence"
}
},
"grpC": {
"match": {
"manufacturer.keyword": "Oceanavigations"
}
}
}
}
}
}
}
Example response
{
...
"aggregations" : {
"interactions" : {
"buckets" : [
{
"key" : "grpA",
"doc_count" : 1553
},
{
"key" : "grpA&grpB",
"doc_count" : 590
},
{
"key" : "grpA&grpC",
"doc_count" : 329
},
{
"key" : "grpB",
"doc_count" : 1370
},
{
"key" : "grpB&grpC",
"doc_count" : 299
},
{
"key" : "grpC",
"doc_count" : 1218
}
]
}
}
}
Note that it groups the values if two or more are identified in the same array/field.
This solution was found in this article along with many other useful information regarding Elasticsearch aggregations

Support for ColorSetting trait on non-Light device types

Our hood supports a backlight which supports full RGB color change. The backlight on/off switch was implemented with a trigger, and we implemented the ColorSetting trait to change the color.
When trying to use Google Assistant to change the color however, we get the reply 'It looks like the device hasn't been set up yet'.
We tried changing the device type to 'Light', and the commands to change colors work flawlessly. Is the ColorSetting trait restricted to Light type only, and is there a workaround for this?
Thanks for your help
Edit: SYNC response for hood:
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"agentUserId": "userID",
"devices": [
{
"id": "HAID",
"type": "action.devices.types.HOOD",
"traits": [
"action.devices.traits.OnOff",
"action.devices.traits.StartStop",
"action.devices.traits.Modes",
"action.devices.traits.FanSpeed",
"action.devices.traits.Toggles",
"action.devices.traits.ColorSetting"
],
"deviceInfo": {
"manufacturer": "MANUFACTURER",
"model": "MODEL",
"hwVersion": "",
"swVersion": ""
},
"name": {
"name": "Dunstabzugshaube",
"nicknames": [
"Dunstabzugshaube"
],
"defaultNames": [
"Dunstabzugshaube"
]
},
"willReportState": true,
"attributes": {
"pausable": false,
"availableModes": [
{
"name": "program",
"name_values": [
{
"name_synonym": [
"program"
],
"lang": "en"
}
],
"settings": [
{
"setting_name": "Auto",
"setting_values": [
{
"lang": "en",
"setting_synonym": [
"auto",
"automatic"
]
}
]
},
{
"setting_name": "circulation",
"setting_values": [
{
"lang": "en",
"setting_synonym": [
"circulation",
"ventilation",
"airflow",
"air flow"
]
}
]
}
],
"ordered": false
}
],
"availableFanSpeeds": {
"speeds": [
{
"speed_name": "S1",
"speed_values": [
{
"lang": "en",
"speed_synonym": [
"fan stage 1",
"Fan Stage 1",
"lowest",
"one"
]
},
{
"lang": "de",
"speed_synonym": [
"lüfter stufe 1",
"Lüfter Stufe 1",
"minimum",
"eins",
"Stufe 1"
]
}
]
},
{
"speed_name": "S2",
"speed_values": [
{
"lang": "en",
"speed_synonym": [
"fan stage 2",
"Fan Stage 2",
"low",
"two"
]
},
{
"lang": "de",
"speed_synonym": [
"lüfter stufe 2",
"Lüfter Stufe 2",
"niedrig",
"zwei",
"Stufe 2"
]
}
]
},
{
"speed_name": "S3",
"speed_values": [
{
"lang": "en",
"speed_synonym": [
"fan stage 3",
"Fan Stage 3",
"medium",
"three"
]
},
{
"lang": "de",
"speed_synonym": [
"lüfter stufe 3",
"Lüfter Stufe 3",
"mittel",
"drei",
"Stufe 3"
]
}
]
}
],
"ordered": true
},
"reversible": false,
"colorModel": "rgb",
"commandOnlyColorSetting": true,
"availableToggles": [
{
"name": "Light",
"name_values": [
{
"name_synonym": [
"light"
],
"lang": "en"
}
]
},
{
"name": "backlight",
"name_values": [
{
"name_synonym": [
"backlight",
"mood light"
],
"lang": "en"
},
{
"name_synonym": [
"Hintergrundbeleuchtung",
"Stimmungslicht"
],
"lang": "de"
}
]
}
]
}
}
]
}
}
Best,
Frank
Your sync response provided above looks correct. Your concern about the command working flawlessly when you set the device type as LIGHT is because LIGHT does have a recommended trait as ColorSetting. To clarify your concern further, some device types do have better support for certain types of relevant grammar/language, which might explain why ColorSetting works better when the device type is set to light.
Google constantly works on the NLU (Natural Language Understanding) algorithms, so this grammar issue would be resolved by now and the ColorSetting trait should now be widely accessible to more devices.
More information about the HOOD and LIGHT device types and their associated traits along with sync, execute and query responses can be found here:
https://developers.google.com/assistant/smarthome/guides/hood
https://developers.google.com/assistant/smarthome/guides/light

Resources